DigestUtils.md5Hex()在传递String对象时会生成错误的哈希值

我正在尝试使用org.apache.commons.codecDigestUtils类在Kotlin中生成md5哈希。 这是测试代码

 @Test fun md5Test(){ val userPassword: String = "123" val md5Hash: String = "202cb962ac59075b964b07152d234b70" assertEquals(md5Hash, DigestUtils.md5Hex(userPassword)) } 

问题是,当我运行这个测试失败,并说生成的MD5散列是28c1a138574866e9c2e5a19dca9234ce

但是…当我通过字符串值而不是对象

 assertEquals(md5Hash, DigestUtils.md5Hex("123")) 

测试通过没有错误

为什么发生这种情况?

这是一个完整的解决方案,以获得MD5 base64哈希:

 fun getMd5Base64(encTarget: ByteArray): String? { val mdEnc: MessageDigest? try { mdEnc = MessageDigest.getInstance("MD5") // Encryption algorithmy val md5Base16 = BigInteger(1, mdEnc.digest(encTarget)) // calculate md5 hash return Base64.encodeToString(md5Base16.toByteArray(), 16).trim() // convert from base16 to base64 and remove the new line character } catch (e: NoSuchAlgorithmException) { e.printStackTrace() return null } } 
Interesting Posts