gpt4 book ai didi

JAVA解密错误: Needs Input to be multiple of 16

转载 作者:太空宇宙 更新时间:2023-11-04 08:21:25 24 4
gpt4 key购买 nike

我正在尝试开发一个简单的加密/解密程序。我遇到的问题是,当我尝试解密加密消息时,我收到一条错误消息,指出使用密码解密时输入长度必须是 16 的倍数。我在某处读到,在将加密消息转换为字符串之前可能需要对其进行编码。我不知道该怎么做?或者如果有其他方法可以请有人帮助我吗?

import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;


public class Cryption {
public static void cryption(String[] args, String message) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, InvalidAlgorithmParameterException {
byte[] encodedKey = "ADBSJHJS12547896".getBytes();
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
Key aesKey = keyGen.generateKey();

System.out.println("CheckType: "+ Global.checkType);
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, aesKey);
byte[] input = Global.message.getBytes();

// Check if clicked Encrypted
if(Global.checkType==true) {
// Encrypt
byte[] messageEncrypted = cipher.doFinal(input);
System.out.println("Encrypted Text: " + messageEncrypted);
Global.encValue = messageEncrypted.toString();
}

// Check if clicked Decrypted
if(Global.checkType==false) {
//String mes = message;
System.out.println(Global.message);
System.out.println("Char lenght " + Global.message.length());
byte[] mesByte = Global.message.getBytes();


// Decrypt
cipher.init(Cipher.DECRYPT_MODE, aesKey);
byte[] messageDecrypted = cipher.doFinal(mesByte);
System.out.println("Text Decrypted: " + new String(messageDecrypted));
}
}

}

最佳答案

Global.encValue = messageEncrypted.toString();

这是完全错误的,因为它只是调用 byte[].toString(),它不会给你内容,只是一个带有类名和哈希码的东西。它在语义上也是错误的,因为 String 本来就不是二进制数据的容器。不要将加密文本转换为字符串。使用 API 为您提供的 byte[] 数组。

关于JAVA解密错误: Needs Input to be multiple of 16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9475944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com