只看楼主 楼主

短信API UTF-8问题请教

只要有中文,UTF-8 始终给的回复是校验错误。比如我Post提交一个请求:
http://sms.powereasy.net/MessageGateUTF8/Message.aspx?ID=papas1283410402&UserName=papas&Key=b078481f87ee9cd3&SendNum=13911278654&Content=%e6%b5%8b%e8%af%95&SendTiming=0&SendTime=&MD5String=ffcf878262d726539a1c2d50f843c195

里面的数据是中文   ”测试“  编码后是: %e6%b5%8b%e8%af%95
用来做MD5验证的数据是:
papas1283410402papasb078481f87ee9cd313911278654%e6%b5%8b%e8%af%950
这个:
MD5 ("papas1283410402papasb078481f87ee9cd313911278654测试0") = ffcf878262d726539a1c2d50f843c195

或者用
MD5 ("papas1283410402papasb078481f87ee9cd313911278654%e6%b5%8b%e8%af%950") = f81234d221b3e84b352b8705aab14ba8

都不成功。


所以想请教一下UTF8下的的MD5验证究竟应该怎么搞。

评分

举报 使用道具 TOP

只看该用户 沙发

这个问题好像是老问题了,必须和MD5.asp兼容的算法,到那里去找呀。并且这个不是标准的做法,希望能修改一下,对UTF-8的支持。

评分

举报 使用道具 TOP

只看该用户 板凳

using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
           {
               byte[] data = md5.ComputeHash(Encoding.GetEncoding("gb2312").GetBytes(input));
               return BitConverter.ToString(data).Replace("-", string.Empty).ToLower(CultureInfo.CurrentCulture);
           }


这是C#的兼容编码,加密的时候不需要编码后加密,具体可以去短信通网站下载示例。

评分

举报 使用道具 TOP

只看该用户 地板

这句不行啊,还是效验错误。

评分

举报 使用道具 TOP