Android 中 MD5 的几种生成方式(小结)
Java提供了 MessageDigest类用来处理消息摘要算法,如 MD5, SHA-1和 SHA-256等。
1.Java的标准实现
使用位运算进行进制转换。
importjava.security.MessageDigest;
importjava.security.NoSuchAlgorithmException;
publicclassHash{
privatestaticfinalchar[]hexCode="0123456789ABCDEF".toCharArray();
publicstaticStringmd5(Stringinput)throwsNoSuchAlgorithmException{
byte[]bytes=MessageDigest.getInstance("MD5").digest(input.getBytes());
returnprintHexBinary(bytes);
}
publicstaticStringprintHexBinary(byte[]data){
StringBuilderr=newStringBuilder(data.length*2);
for(byteb:data){
r.append(hexCode[(b>>4)&0xF]);
r.append(hexCode[(b&0xF)]);
}
returnr.toString();
}
}
2.使用String.format
使用 String.format进行进制转换。
importjava.security.MessageDigest;
importjava.security.NoSuchAlgorithmException;
publicclassHash{
publicstaticStringmd5(Stringinput)throwsNoSuchAlgorithmException{
byte[]bytes=MessageDigest.getInstance("MD5").digest(input.getBytes());
returnprintHexBinary(bytes);
}
publicstaticStringprintHexBinary(byte[]data){
StringBuilderr=newStringBuilder(data.length*2);
for(byteb:data){
r.append(String.format("%02X",newInteger(b&0xFF)));
}
returnr.toString();
}
}
3.Kotlin的标准实现
objectHash{
privatevalHEX_CHARS="0123456789ABCDEF".toCharArray()
funmd5(input:String):String{
valbytes=MessageDigest.getInstance("MD5").digest(input.toByteArray())
returnprintHexBinary(bytes)
}
funprintHexBinary(data:ByteArray):String{
valr=StringBuilder(data.size*2)
data.forEach{b->
vali=b.toInt()
r.append(HEX_CHARS[ishr4and0xF])
r.append(HEX_CHARS[iand0xF])
}
returnr.toString()
}
}
4.Kotlin扩展函数
funString.md5():String{
valbytes=MessageDigest.getInstance("MD5").digest(this.toByteArray())
returnbytes.hex()
}
funByteArray.hex():String{
returnjoinToString(""){"%02X".format(it)}
}
定义完扩展函数后,就可以使用下面的语法来计算MD5值:
valhash="foo-bar".md5()
到此这篇关于Android中MD5的几种生成方式(小结)的文章就介绍到这了,更多相关AndroidMD5生成内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。