ZuoMiaoQingJin
雪中悍刀行
2016-04-02 17:28
采纳率: 33.3%
浏览 6.3k

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 05:07
    已采纳

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

    点赞 评论
  • CSDNXIAOS
    Robot-S 2016-04-02 17:32

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

    点赞 评论
  • caozhy
    点赞 评论
  • xionglangs
    编程爱好者熊浪 2016-04-03 02: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。

    点赞 评论

相关推荐