2 zuomiaoqingjin ZuoMiaoQingJin 于 2016.04.03 01:28 提问

java sha1加密 和 python sha1 加密结果不一致

java代码

        MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
        messageDigest.update(value.getBytes());
        return bytesToHexString(messageDigest.digest());

python 代码

      md = hashlib.sha1()
      md.update(value.encode('utf-8'))
                md.digest()

初学python 大神帮忙看看

4个回答

qq_24142447
qq_24142447   2016.04.03 13:07
已采纳

print(hashlib.sha1(value.encode('utf-8')).hexdigest()) 这是我用的你试一下

caozhy
caozhy   Ds   Rxr 2016.04.03 03:43
xionglangs
xionglangs   Rxr 2016.04.03 10:22

一个应用,需要计算sha1加密,但和java的结果却不同,java的是正确的

Python代码 收藏代码
import hashlib

print hashlib.sha1('fetion.com.cn:123456').hexdigest()

结果:78fdd307349087f375cdabd3acbf7bf84e33ad51
Java代码 收藏代码
System.out.println(MessageDigest.getInstance("SHA-1").digest("fetion.com.cn:123456".getBytes()));

结果:871D0A9E95ABA22B4604224CFBA24E605FABBC34
因为python没有byte这个对象,而java是用byte进行hash计算的~
决解办法:可以试下http://stackoverflow.com/questions/13019598/python-hmac-sha1-vs-java-hmac-sha1-different-results。

CSDNXIAOS
CSDNXIAOS   2016.04.03 01:32

举个简单例子,下面这个是 SHA1 加密的一个函数,完全可以用来加密口令, SHA1 加密是 160 位的哈希加密方法。(两个不同字串加密后重复的概率极低,能将小的变化放到成大的变化,即是只错一个字母,加密结果也完全不同。) 特别适合加密口令:加密后,登陆时,重新计算用户输入的密码的 SHA1 值,如果与数据库中存储的一致,则证明用户登陆成功。管理员无法从数据库看到的 SHA1 值反推出真实密......
答案就在这里:SHA1 加密
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!