我的代码
,,,
//key genration
val keygen = KeyGenerator.getInstance("AES")
keygen.init(256)
val key = keygen.generateKey()
keyTV.setText(key.toString())
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())
encryptMsgTV.setText(ciphertext.toString())
})
decryptbtn.setOnClickListener(View.OnClickListener {
val ciphertext = encryptMsgTV.text.toString()
val decipher = Cipher.getInstance("AES")
decipher.init(Cipher.DECRYPT_MODE,key)
val plaintext = decipher.doFinal(ciphertext.toByteArray())
decryptMsgTV.setText(plaintext.toString())
})
,,,
错误:-javax.crypto.IllegalBlockSizeException:解密中的最后一个块不完整
为什么iam收到错误,我的代码有什么问题
这是我的解决方案实现'commons-codec:commons-codec:1.11'
private fun decrypt(plainText: String): String? {
val cipher = Cipher.getInstance("AES/ECB/NoPadding")
val key: SecretKey = SecretKeySpec(hexToByteArray(keyHex), "AES")
cipher.init(Cipher.DECRYPT_MODE, key)
val result = cipher.update(hexToByteArray(plainText))
val text = String(Hex.encodeHex(result))
val finalText = String(hexToByteArray(text)!!)
return finalText.trim { it <= ' ' }
}
fun hexToByteArray(s: String?): ByteArray? {
require(!(s == null || s.length % 2 == 1))
val chars = s.toCharArray()
val len = chars.size
val data = ByteArray(len / 2)
var i = 0
while (i < len) {
data[i / 2] =
((Character.digit(chars[i], 16) shl 4) + Character.digit(
chars[i + 1],
16
)).toByte()
i += 2
}
return data
}
我做了一个简单的文件加密/解密器。它将模式和要操作的文件作为参数。加密时,它生成随机字符串并使用该字符串加密文件。解密文件时,它会提示用户输入密码,并在解密时使用该密码。 我的问题是,解密时得到的不是明文,而是胡言乱语,尽管我小心翼翼地将相同的密钥写入输入。 非常感谢James K Polk提供的加密/解密代码!
我正在尝试加密用于建立和连接到ActiveMQ队列的密码。我正在跟进这里的步骤,我能够使用新的activemq-security.xml文件启动ActiveMQ。我有一个脚本试图创建并连接到队列,但我不断收到用户名或密码无效的错误。 我为消费者用户加密了密码,并将加密的密码存储在credentials-enc.properties文件中,如下所示: 我尝试了不同的方法,我确信由于某种原因,cred
问题内容: 我似乎找不到使用AES 128位加密的漂亮示例。 有人有示例代码吗? 问题答案: 如果您只想使用内置的加密提供程序RijndaelManaged,请查看以下帮助文章(它也有一个简单的代码示例): http://msdn.microsoft.com/zh-CN/library/system.security.cryptography.rijndaelmanaged.aspx 以防万一您急
我已经设法使它能够处理不包含og a-zA-Z0-9之外的字符和一些特殊字符的文本,但如果我使用丹麦字母,如ielouangØ,解密的文本会显示?而不是实际的字母。所有文件都保存为UTF-8,头字符集=UTF-8 Javascript - input: "tester for php: 我试过选项0,OPENSSL_ZERO_PADDING和OPENSSL_RAW_DATA,结果相同。有人能帮我吗
我正在尝试使用Javascript和CryptoJS复制Java应用程序中使用的加密。我不太确定应该如何复制SecretKeySpec,因为CryptoJS似乎需要一个字符串作为密钥。 下面是我需要在JS中复制的Java加密代码: 到目前为止,我的JS代码: 此外,密码的最终输出是一个加密的字节数组。CryptoJS的最终输出似乎是一个带有密文的对象。有没有办法以字节数组的形式获取输出? 我现在唯
问题内容: 我的问题是,我无法在Java中正确解密。尽管使用了正确的密钥和IV,解密后我仍然得到垃圾字符。我在Java中没有任何编译/运行时错误或异常,因此我相信我使用正确的参数进行解密。 Python加密代码- Java解密代码- 有什么明显的我想念的东西吗? 问题答案: 的操作的密码反馈(CFB)模式是模式家族。它由段大小(或寄存器大小)参数化。PyCrypto的默认段大小为8位,而Java(