新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> VoiceXML, CCXML, OpenVXI
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML在语音技术中的应用 』 → MD5加密技术 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 27963 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: MD5加密技术 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     zhu_ruixian 帅哥哟,离线,有人找我吗?射手座1983-12-2
      
      
      威望:2
      等级:大二期末(Java考了96分!)
      文章:406
      积分:3471
      门派:W3CHINA.ORG
      注册:2006/3/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给zhu_ruixian发送一个短消息 把zhu_ruixian加入好友 查看zhu_ruixian的个人资料 搜索zhu_ruixian在『 XML在语音技术中的应用 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看zhu_ruixian的博客楼主
    发贴心情 MD5加密技术

    前几天,在看OpenVXI3.4的时候,偶然发现了几个奇怪的文件,那就是OpenVXI-3.4\src\cache下面的,base64.c,base64.h,md5.c,md5.h。既然有人把源代码给出来了,不妨花点时间看一下。感觉挺有意思,和大家分享一下。先来看看md5
        MD5简介
        MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。MD5算法的描述和C语言源代码在Internet RFCs 1321中有详细的描述(http://www.ietf.org/rfc/rfc1321.txt),这是一份最权威的文档,由Ronald L. Rivest在1992年8月向IEFT提交。其实\src\cache下面的的源代码,就是从那里面分离出来的。
        md5是单向加密的,也就是说加密后产生的字符串不可能,反过来被解密掉。比如你的密码设为:www.xml.org.cn ,md5加密以后就变为了,
    MD5 ("www.xml.org.cn") = 8133445b961d56d76356d356687394e6,然后把加密后的字符串"8133445b961d56d76356d356687394e6",放到数据库中,下次登录的时候,系统不是解密8133445b961d56d76356d356687394e6,然后与你输入的密码比较,而是把你的密码进行md5加密,然后把加密后的字符串与数据库中的8133445b961d56d76356d356687394e6比较,如果用户把密码丢了,就连系统管理员也不知道你输入的密码是什么。
        算法应用
      MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中只有一行文本,这一行文本就是文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。如果在以后传播这个文件的过程中,无论文件的内容发生了任何形式的改变(包括人为修改或者下载过程中线路不稳定引起的传输错误等),只要你对这个文件重新计算MD5时就会发现信息摘要不相同,由此可以确定你得到的只是一个不正确的文件。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的"抵赖",这就是所谓的数字签名应用。
        源代码
        我们现在看看md5.cpp的源代码。打开以后你会发现里面有8个函数:
           void Decode (UINT4 *output,const unsigned char *input,unsigned int len);
           void Encode (unsigned char *output,const UINT4 *input,unsigned int len);
           void MD5_memcpy (POINTER output,const POINTER input,unsigned int len);
           void MD5_memset (POINTER output,int value,unsigned int len);
           void MD5Final (unsigned char digest[16],MD5_CTX *context);
           void MD5Init (MD5_CTX *context);
           void MD5Transform (UINT4 state[4],const unsigned char block[64]);
           void MD5Update (MD5_CTX *context,const unsigned char *input,unsigned int inputLen);  
    其中MD5_memcpy 和MD5_memset和C语言中的memcpy memset一样,只不过它为了提高速度,在内部又实现了一次。可以通过更改宏定义来选择使用系统的memcpy memset,还是用md5中实现的函数。其实Decode  Encode MD5Transform 在外部也用不到。用到的只有MD5Init MD5Update MD5Final 三个函数。比如要加密字符串,下面为实现函数:
            void MDString (char* string)
            {
              MD5_CTX context;
              unsigned char digest[16];
              unsigned int len = strlen (string);
              MD5Init (&context);
              MD5Update (&context, (const unsigned char*)string, len);
              MD5Final (digest, &context);
              printf ("Execute Result: MD%d (\"%s\") = ", MD, string);
              MDPrint (digest);
              printf ("\n");
            }
            void MDPrint (unsigned char digest[16])
            {
              unsigned int i;
              for (i = 0; i < 16; i++)
              printf ("%02x", digest[i]);
            }
      加密文件:
             void MDFile (char* filename)
            {
              FILE *file;
              MD_CTX context;
              int len;
              unsigned char buffer[1024], digest[16];
              if ((file = fopen (filename, "rb")) == NULL)
                 printf ("Execute Result: %s can't be opened\n", filename);
              else {
              MDInit (&context);
              while (len = fread (buffer, 1, 1024, file))
                MDUpdate (&context, buffer, len);
              MD5Final (digest, &context);
              fclose (file);
              printf ("Execute Result:MD%d (%s) = ", MD, filename);
              MDPrint (digest);
              printf ("\n");
              }
           }
    以上函数都可以在http://www.ietf.org/rfc/rfc1321.txt里面的mddriver.cpp里面找到。修改了一下,就可以生成exe了,可以得到任意字符串和文件的md5加密结果了。

       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    为什么总是索取的人多,奉献的人少...

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/21 16:23:00
     
     zhu_ruixian 帅哥哟,离线,有人找我吗?射手座1983-12-2
      
      
      威望:2
      等级:大二期末(Java考了96分!)
      文章:406
      积分:3471
      门派:W3CHINA.ORG
      注册:2006/3/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给zhu_ruixian发送一个短消息 把zhu_ruixian加入好友 查看zhu_ruixian的个人资料 搜索zhu_ruixian在『 XML在语音技术中的应用 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看zhu_ruixian的博客2
    发贴心情 
    点击上面的链接就可以下载源代码了。

    ----------------------------------------------
    为什么总是索取的人多,奉献的人少...

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/21 16:26:00
     
     aryaky 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究汇编)
      文章:33
      积分:236
      门派:XML.ORG.CN
      注册:2006/8/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给aryaky发送一个短消息 把aryaky加入好友 查看aryaky的个人资料 搜索aryaky在『 XML在语音技术中的应用 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看aryaky的博客3
    发贴心情 
    兄弟兴趣广泛阿。
    我想知道你生成的那个可运行程序用的那个版本的tts阿,我下了msspeechsdk4.0,有很多问题,加到openvxi不成功
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/22 13:10:00
     
     zhu_ruixian 帅哥哟,离线,有人找我吗?射手座1983-12-2
      
      
      威望:2
      等级:大二期末(Java考了96分!)
      文章:406
      积分:3471
      门派:W3CHINA.ORG
      注册:2006/3/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给zhu_ruixian发送一个短消息 把zhu_ruixian加入好友 查看zhu_ruixian的个人资料 搜索zhu_ruixian在『 XML在语音技术中的应用 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看zhu_ruixian的博客4
    发贴心情 
    speechsdk51.exe
    speechsdk51LangPack.exe
    那个可运行程序里面已经包括了msspeechsdk的dll文件,你运行的时候不用安装tts。唯一可能出现问题的是,我发过去的是Debug版的,如果机器上没有安装Visual Stdio2003有可能出现问题。

    ----------------------------------------------
    为什么总是索取的人多,奉献的人少...

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/22 18:15:00
     
     dengxu7 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:55
      门派:XML.ORG.CN
      注册:2006/10/4

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给dengxu7发送一个短消息 把dengxu7加入好友 查看dengxu7的个人资料 搜索dengxu7在『 XML在语音技术中的应用 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看dengxu7的博客5
    发贴心情 
    不好意思,你的代码要怎么使用阿? .exe文件生成的使用不了啊!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/10/16 11:00:00
     
     zhu_ruixian 帅哥哟,离线,有人找我吗?射手座1983-12-2
      
      
      威望:2
      等级:大二期末(Java考了96分!)
      文章:406
      积分:3471
      门派:W3CHINA.ORG
      注册:2006/3/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给zhu_ruixian发送一个短消息 把zhu_ruixian加入好友 查看zhu_ruixian的个人资料 搜索zhu_ruixian在『 XML在语音技术中的应用 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看zhu_ruixian的博客6
    发贴心情 
    http://www.ietf.org/rfc/rfc1321.txt里不是有md5的源代码吗?把那些代码分离出来,然后加到你的工程里面。然后把上面的函数加进去就可以了。 void MDString (char* string)是获取一个字符串的加密结果。void MDFile (char* filename)是加密一个文件。还有什么不明白吗?

    ----------------------------------------------
    为什么总是索取的人多,奉献的人少...

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/10/16 12:47:00
     
     jare_xml 帅哥哟,离线,有人找我吗?射手座1983-12-10
      
      
      等级:大一(猛啃高等数学)
      文章:14
      积分:111
      门派:XML.ORG.CN
      注册:2005/12/19

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jare_xml发送一个短消息 把jare_xml加入好友 查看jare_xml的个人资料 搜索jare_xml在『 XML在语音技术中的应用 』 的所有贴子 点击这里发送电邮给jare_xml 引用回复这个贴子 回复这个贴子 查看jare_xml的博客7
    发贴心情 
    8错啊!

    ----------------------------------------------
    XML --- XML

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/15 8:34:00
     
     Lmieung 美女呀,离线,快来找我吧!
      
      
      等级:大一新生
      文章:1
      积分:55
      门派:XML.ORG.CN
      注册:2009/3/24

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Lmieung发送一个短消息 把Lmieung加入好友 查看Lmieung的个人资料 搜索Lmieung在『 XML在语音技术中的应用 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看Lmieung的博客8
    发贴心情 
    那个文档里是有源代码,怎么分离啊?自身不能运行吗?请教高手啊,这个我有急用。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/3/24 18:00:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML在语音技术中的应用 』 的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/28 13:43:21

    本主题贴数8,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    218.750ms