• 5918阅读
  • 4回复

请教一个有关不同语言用md5加密的问题 [复制链接]

上一主题 下一主题
离线erhumusic182
 

只看楼主 倒序阅读 楼主  发表于: 2010-12-10
之前用qt的加密方法,将用户密码加密并保存于数据中,现在程序登录都没有问体,但是现在用c#写的另外一个程序也要连接这个数据库
也用md5加密,于是将明码密码加密和数据库中的进行比较,发现加密的时候,加密国形成的byte数组,和之前qt中加密形成QByteArray不一样——qt中加密后很多byte是负值(打印发现),而c#中每个byte都是正值,两者对应的正负值相减正好是256,如果两者都是正值则都一样。

这是为什么呢?现在就是c#加密回合数据库中的不一样。
qt爱好者
离线erhumusic182

只看该作者 1楼 发表于: 2010-12-13
c#中:
     byte[] source = md5.ComputeHash(Encoding.GetEncoding(codeName).GetBytes(sourceString)).replace ("'","*");;

qt中:
     QByteArray aaaaa = QCryptographicHash::hash(passWrd->text().trimmed().toLocal8Bit(),QCryptographicHash::Md5).replace ("'","*");
qt爱好者
离线erhumusic182

只看该作者 2楼 发表于: 2010-12-13
好像是我看错了,现在的问题是两者加密成byte结果是一样的,但是qt那个能匹配上,而c#那个不能匹配上!
这是为什么呢?
qt爱好者
离线erhumusic182

只看该作者 3楼 发表于: 2010-12-17
最后解决,主要不是加密的问题,而是封装的函数对字符串的处理不一样造成的!
主要对大于值127的byte在连接到其他字符串的上处理qt和c#不一样!
qt爱好者
离线dbzhang800

只看该作者 4楼 发表于: 2010-12-17
引用第3楼erhumusic182于2010-12-17 11:51发表的  :
最后解决,主要不是加密的问题,而是封装的函数对字符串的处理不一样造成的!
主要对大于值127的byte在连接到其他字符串的上处理qt和c#不一样!

这不是可以说明你对 C语言中的基本类型 char、signed char 、unsigned char 不是太熟悉
快速回复
限100 字节
 
上一个 下一个