我正在尝试获取字符串的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
的混合。
答案 0 :(得分:1)
您正试图调用采用单个byte
参数的update
方法,并使用toByte
将整个字符串的数值转换为单个字节。对于String
内部的非数字值,这种转换方法会失败。
相反,您可以将update
的变体与byte[]
参数一起使用,并使用toByteArray
将String
转换为字节数组(每个字符一个):
digest.update(data.toByteArray())