【发布时间】:2021-07-12 07:43:12
【问题描述】:
我的代码
,,,
//key genration
val keygen = KeyGenerator.getInstance("AES")
keygen.init(256)
val key = keygen.generateKey()
keyTV.setText(key.toString())
val encoder = Base64.getEncoder()
val decoder = Base64.getDecoder()
encryptbtn.setOnClickListener(View.OnClickListener {
val plaintext = message.text.toString()
// object of cipher
val cipher = Cipher.getInstance("AES")
cipher.init(Cipher.ENCRYPT_MODE,key)
// encrypted message
val ciphertext = cipher.doFinal(plaintext.toByteArray(Charsets.UTF_8))
encryptMsgTV.setText(String(encoder.encode(ciphertext)))
})
decryptbtn.setOnClickListener(View.OnClickListener {
val str = encryptMsgTV.text.toString()
val ciphertext = decoder.decode(str.toByteArray(Charsets.UTF_8))
val decipher = Cipher.getInstance("AES")
decipher.init(Cipher.DECRYPT_MODE,key)
val plaintext = decipher.doFinal(ciphertext)
decryptMsgTV.setText(plaintext.toString())
})
,,,
错误:- 现在我更新了我的代码,但现在所有错误都解决了,但我的解密出了点问题,它没有正确解密
【问题讨论】:
-
您的问题是您将 AES 加密的结果视为有效字符串的编码,但事实并非如此,它只是一个任意字节序列。那就是
ciphertext.toString()没有意义,实际上会破坏数据。
标签: android kotlin encryption cryptography aes