2017-10-06 57 views
1

我试图用科特林产生在我的Android代码的字符串的MD5 ..转换字节数组字符串在科特林

 val md5 = MessageDigest.getInstance("MD5") 
     val hash = md5.digest(queryToSign.toByteArray(Charset.defaultCharset())).toString() 

但是这给了我:

[B @ 118072

有什么想法?

回答

3

解决吧..使用的BigInteger

 val md5 = MessageDigest.getInstance("MD5") 
     val hash = BigInteger(1, md5.digest(queryToSign.toByteArray(Charset.defaultCharset()))).toString(16) 
+0

以其它方式使用十六进制转换器(例如Apache的抄本)会做的伎俩 – s1m0nw1

+0

给大家:虽然这是一个非常前瞻性的解决方案,要知道所有的前导零会修剪。在计算散列值的情况下,这一点很重要。所以还必须有一个代码来检查结果的长度,并在需要时用零填充。例如,'val correctedHash =“0”.repeat(bytes.size * 2 - hash.length)+ hash' –

相关问题