资源简介
上次曾经传过一个易宝、支付宝、财付通、云网等多用MD5加密程序。
易宝是采用hmac的MD5加密,提供的ASP版函数不支持中文,使用dll注册那个兼容又不太好。
上次我发布的加密程序也不支持中文,且支付宝那个加密函数是错误的。
为此我专门研究了三天的hmac方案,当然了我也只是通过改进代码反复测试而已。
先是调用易宝提供的C++版dll,因为我知道它支持中文。我先是把ASP版的密钥key进行unicode处理,
然后用中文密钥与dll版加密结果竟然一致了。当时一高兴,认为处理中文字符肯定是采用unicode的。
结果把密文换成中文一试,又不行了。我又想到按普通字符处理,中文字符再And &HFF,反复试验还是不行。
浪费了两天,也找到了另一个C++版hmac函数源码,没看到有字符编码处理。最后才想到易宝提供的其它源码。
PHP源码还是比较容易看懂的,原来加密的字符text和密钥key都是先转换为UTF-8编码。
这一点与原先那个dll里就可能不一致,把PHP上传到空间一测试,果然密钥使用中文是不一样的。
我也无法知道易宝自己到底使用哪一种方案,先设计一个UTF-8的转码函数吧。
网上找了下,光这些函数都有几十K大小,还是自己设计省事。ASP版的hmac都不支持中文,就是没有转码函数。
VB还有StrConv可以转换unicode,ASP却不能用。其实我们常用的ASP版md5加密,与其它程序的也是不兼容中文。
原因还是ASP转换unicode十分困难,但是支付宝的接口是有这么个函数的,而且代码很简练,我参考它设计了UTF-8编码函数。(支持多国语言的哦)
经过三天的改进,程序从17K精简到了9K,使hmac兼容中文,md5也提供了两个版本,一是ASP简版,二是标准版。
这个标准版是指其它程序都在采用的unicode编码方案,其实ASP简版才是我们最多使用的,但它并不通用。
调用方法:HmacMd5(text,key)-加密内容支持中文,但key最好用非中文的。
md5(text)-简版,ASP_MD5(text)-标准版
支付宝一定要用ASP_MD5,财付通的加密内容一般没中文的,所以两者均可。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1614 2011-04-10 19:52 说明.txt
文件 9115 2011-04-10 18:29 md5.asp
----------- --------- ---------- ----- ----
10729 2
----------- --------- ---------- ----- ----
文件 1614 2011-04-10 19:52 说明.txt
文件 9115 2011-04-10 18:29 md5.asp
----------- --------- ---------- ----- ----
10729 2
- 上一篇:MAX485两个单片机半双工通信
- 下一篇:[原创]使用MFC实现文档打印
相关资源
- 标准的MD5源码md5.cmd5.h使用说明文件
- MD5算法源代码(MFC)
- vc++ MD5算法源码
- MD5算法C++实现
- 文件MD5查看器(VC++MFC)源代码
- Virtual Machine Design and Implementation in C
- VC6.0 C++ MD5验证源码文件和字符串验证
- Visual C++开发GIS系统第2版
- 获取进程信息和计算进程文件的MD5码
- MFC vc6.0 RSA DES MD5 加密解密算法
- MD5 摘要算法C语言实现
- SM3算法C语言实现
- MFC实现MD5值生成工具文件和字符串都
- HMAC-MD5 C语言算法
- ASP.NET Technique 外文翻译
- SHA HMAC 和SHA3基于Keccak加密算法测试代
- aspen用户模型
- MD5 碰撞生成器 C++源码
- 常用加密算法AES、RSA、DES、MD5、TEA、
- MD5 C++实现代码,带注释
- C语言 3DES、AES、RC6、TEA、RSA、MD5、S
- GDI+SDK
- MD5-SHA1-SHA256算法C源码
- md5加密算法 C语言经过测试验证完整版
- 趣味编程.pdf
- MFC 计算文件MD5码 VC++
- PBKDF2_HMac_SHA1哈希算法
- c语言实现获取文件的md5哈希值
- hmacSha256Test.rar
- MD5算法c++程序设计实现
评论
共有 条评论