gpt4 book ai didi

java - AES加密j2me

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:57:44 25 4
gpt4 key购买 nike

我正在尝试在 j2me 中进行 AES 加密。我对 android 使用了几乎相同的代码,并且在那里工作正常。以下是代码块。我得到 null 作为输出

package cartoon;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public class MCrypt {

private String iv = "0123456789abcdef";// iv
private IvParameterSpec ivspec;
private SecretKeySpec keyspec;
private Cipher cipher;
private String SecretKey = "fedcba9876543210";// secretKey

public MCrypt() {
ivspec = new IvParameterSpec(iv.getBytes(), 0, iv.getBytes().length);

keyspec = new SecretKeySpec(SecretKey.getBytes(), 0, iv.getBytes().length, "AES");

}

String Decrypt(String text) throws Exception {
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
byte[] results = null;
int results1 = cipher.doFinal(Base64.decode(text), 0, Base64.decode(text).length, results, 0);
System.out.println("String resultssssssssssssss " + results1);
return new String(results, "UTF-8");
}

String Encrypt(String text)
throws Exception {
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

System.out.println("String input : " + text);

cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
byte[] results = null;
int results1 = cipher.doFinal(text.getBytes(), 0, text.getBytes().length, results, 0);
return Base64.encode(results);
}
}

打印结果

MCrypt mcrypt = new MCrypt();
try {
encrypted = mcrypt.Encrypt("id=450");

decrypted = new String(mcrypt.Decrypt(encrypted));
System.out.println("Encrypted Text : " + encrypted);
System.out.println("Decrypted Text : " + decrypted);

} catch (Exception e) {
e.printStackTrace();
}

我哪里错了?

最佳答案

尝试以下操作

你应该首先适本地初始化字节数组

String Decrypt(String text) throws Exception {
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);

// here
byte[] results = cipher.doFinal(Base64.decode(text));

int results1 = cipher.doFinal(Base64.decode(text), 0, Base64.decode(text).length, results, 0);
System.out.println("String resultssssssssssssss " + results1);
return new String(results, "UTF-8");
}

String Encrypt(String text)
throws Exception {
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

System.out.println("String input : " + text);

cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);

// and here
byte[] results = cipher.doFinal(text.getBytes());

int results1 = cipher.doFinal(text.getBytes(), 0, text.getBytes().length, results, 0);
return Base64.encode(results);
}

关于java - AES加密j2me,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13263210/

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