我正在尝试获取字符串的MD5格式
代码:
fun getEncodedData(data: String): String? {
val MD5 = "MD5"
// Create MD5 Hash
val digest = java.security.MessageDigest
.getInstance(MD5)
digest.update(data.toByte())
val messageDigest = digest.digest()
// Create Hex String
val hexString = StringBuilder()
for (aMessageDigest in messageDigest) {
var h = Integer.toHexString(0xFF and aMessageDigest.toInt())
while (h.length < 2)
h = "0$h"
hexString.append(h)
}
return hexString.toString()
}
在: digest.update(data.toByte())
有一次崩溃。我得到数字格式异常
传递给data
: oEXm43
的输入
如果我将ex:11
作为输入data
的字符串传递,则不会发生崩溃。
输入应该总是integer
在string
中,还是可以是number
和characters
的混合物。
发布于 2019-01-09 23:22:40
您正在尝试调用接受单个update
参数的byte
方法,并使用toByte
将整个字符串的数值转换为单个字节。这种转换方法在String
内部的非数值上失败.
相反,您可以使用带有update
参数的byte[]
变体,并使用toByteArray
将String
转换为字节数组(每个字符一个)。
digest.update(data.toByteArray())
https://stackoverflow.com/questions/54123507
复制