这里说的不可逆加密有MD5 SHA1 SHA256
/** * 消息摘要 * 不可逆 */ object MessageDigetUtil { /** * 用户登录用的比较广泛 */ fun md5(input: String): String { val digest = MessageDigest.getInstance("MD5") val result = digest.digest(input.toByteArray()) return toHex(result) } fun sha1(input: String): String { val digest = MessageDigest.getInstance("SHA-1") val result = digest.digest(input.toByteArray()) return toHex(result) } fun sha256(input: String): String { val digest = MessageDigest.getInstance("SHA-256") val result = digest.digest(input.toByteArray()) return toHex(result) } //转成16进制 fun toHex(byteArray: ByteArray): String { //转成16进制 val result = with(StringBuilder()) { byteArray.forEach { val value = it val hex = value.toInt() and (0xFF) val hexStr = Integer.toHexString(hex) //println(hexStr) if (hexStr.length == 1) { //this.append("0").append(hexStr) append("0").append(hexStr) } else { //this.append(hexStr) append(hexStr) } } this.toString() } return result } }
fun main(args: Array<String>) { //md5 16 加密后是16个字节 32 加密后转成16进制是32个字节 //文字多长长度不变 val input = "MD5加密" val md5 = MessageDigetUtil.md5(input) println("MD5加密:" + md5) println("MD5加密的长度:" + md5.toByteArray().size) val input1 = "SHA-1加密" val SHA = MessageDigetUtil.sha1(input1) println("SHA-1加密:" + SHA) println("SHA-1加密的长度:" + SHA.toByteArray().size) val input256 = "SHA-SHA256" val SHA256 = MessageDigetUtil.sha256(input256) println("SHA-SHA256:" + SHA256) println("SHA-SHA256的长度:" + SHA256.toByteArray().size) }
android互助群