最赞回答 / 水不要鱼_
你有没有发现MD5 加密之后的长度是一样的,不管原本的信息有多长?这是因为 MD5 是摘要算法,有点类似于从你要加密的信息中选取一部分信息出来加密,所以即使你得到了 MD5 加密之后的结果,也很难从一部分信息中反推出原本的完整信息。另外,MD5 也是存在被破解的情况,那就是最传统的破解方法,从一堆数据中一个个去试。所以, MD5 可以设置一个盐值,类似于干扰信息,可以降低被破解的概率。
2018-05-30
最新回答 / 蝶梦疏妄
可能是转义的时候出的问题因为我 public static void bcHmacMD5() { HMac hmac = new HMac(new MD5Digest()); hmac.init(new KeyParameter(org.bouncycastle.util.encoders.Hex.decode(""))); hmac.update(src.getBytes(), 0, src.getBytes().length); // ...
2017-07-01
最新回答 / taoy
一个byte是八比特,new String时按照byte的值到字符表中找对应的字符来生成字符串。Hex.byteArrayToString是把一个byte变成两个十六进制的英文与数字组合,内容当然就不会一样。
2017-04-10
最赞回答 / 明日之春
这个是因为DigestUtils.sha1Hex(src)中是默认使用UTF-8的编码格式来获取字节数组的,而DigestUtils.sha1Hex(src.getBytes())是用系统默认的编码格式来获取字节数组的,不一定是UTF-8。由于字节数组不同,所以结果也不同所以DigestUtils.sha1Hex(src)应该等于DigestUtils.sha1Hex(src.getBytes("UTF-8"))
2016-10-27