gpt4 book ai didi

android - AES 算法 - 解密问题

转载 作者:太空宇宙 更新时间:2023-11-03 12:57:44 26 4
gpt4 key购买 nike

我已经编写了 AES 解密代码,但没有成功。我的 AES 算法类(class)在这里。 http://pastebin.com/QtpFnW84实现是:

String Masterkey = "eX0XcsF8lkeX0XcsF8lkeX0XcsF8lkeX0XcsF8lkeX0XcsF8lk";
try {
String s = AES_Algo
.decrypt(
Masterkey,
"LVmDIcmVIuNVPObjLXkVbFc13NCX1Md3DjrvfiioMQHS7QmizT3dlSujgA7NS0zI HEweRWGcwOKpu0wurK495yCTWkJO33X1n+at60xLdJ7ZUreRWN9RatUjRQuLI7Ft kwH7QMTQAYXQizGJ0HrArja8QA/YnkiGpgO0pdmYm9Mb6g/sIXhz1Oeo42uwzTM1 F+t6AM/qrH9ZMozlctU6LQQVIggP8zzmnwvjNCyyYJCsXedOEMcvrpQV100gz+pf cE4RisPgN0IOKzvzepJ88E3VMPCXBv/AV4Z2/fuBcmimzGdvZwKgYM/39TGNBS7t T491knA3ZdMoAnSPFvdM4khfRyM5I9FJpwDxmpykA4VpBUhyd4p+ZS1ZSQ8Zwi3I 5egtoNkSJhI6pjAR7PbzJtJ+VAWCVIdsFP4Kc+KKPBE0HVS5UiQQ+OJjx2r9iMMR OYqeyqMv8xw3Wy7TBMiKnQMCRo5+K1mDabx164+6cfoKk8+6b5WlNfBQVobZpQs2");
Log.e("s", s);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

每次我得到异常:

06-13 05:03:43.013: W/System.err(1757): java.lang.NumberFormatException: unable to parse 'LV' as integer
06-13 05:03:43.043: W/System.err(1757): at java.lang.Integer.parse(Integer.java:433)
06-13 05:03:43.043: W/System.err(1757): at java.lang.Integer.parseInt(Integer.java:422)
06-13 05:03:43.043: W/System.err(1757): at java.lang.Integer.valueOf(Integer.java:704)
06-13 05:03:43.043: W/System.err(1757): at com.caddytips.AES_Algo.toByte(AES_Algo.java:76)
06-13 05:03:43.043: W/System.err(1757): at com.caddytips.AES_Algo.decrypt(AES_Algo.java:32)

有人可以帮我吗?

提前致谢。

最佳答案

http://android-developers.blogspot.in/2013/02/using-cryptography-to-store-credentials.html

http://developer.android.com/reference/javax/crypto/SecretKeyFactory.html

检查以上链接。以下内容供引用。根据您的需要修改以下内容。

用法

 try {
DescEncrypter ec = new DescEncrypter();
byte[] cipherText =ec.encrypt("hi", "hello");
String enc = new String(cipherText,"UTF-8");
String decryp= ec.decrypt("hi", cipherText);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

DescEncrypter.java

    import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;

public class DescEncrypter {

public static final int SALT_LENGTH = 20;
public static final int PBE_ITERATION_COUNT = 200; //1024;

private static final String PBE_ALGORITHM = "PBEWithSHA256And256BitAES-CBC-BC";

//algoritmo / modo / relleno
private static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding";

byte[] iv = "1234567890asdfgh".getBytes();

byte[] salt = "dfghjklpoiuytgftgyhj".getBytes();

public byte[] encrypt(String password, String cleartext) {

byte[] encryptedText = null;

try {


PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray(), salt, PBE_ITERATION_COUNT, 256);

//Factoria para crear la SecretKey, debemos indicar el Algoritmo
SecretKeyFactory factory = SecretKeyFactory.getInstance(PBE_ALGORITHM);

SecretKey tmp = factory.generateSecret(pbeKeySpec);

//Creamos una llave;
SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");

//Obtenemos la llave, solo informativo
byte[] key = secret.getEncoded();

//La clase Cipher, se usa para cifrar mediante algoritmos de clave simétrica
Cipher encryptionCipher = Cipher.getInstance(CIPHER_ALGORITHM);

//byte[] iv = generateIv();

IvParameterSpec ivspec = new IvParameterSpec(iv);

//Accion, SecretKey, parameter specification for an initialization vector
encryptionCipher.init(Cipher.ENCRYPT_MODE, secret, ivspec);

//Realizamos el cifrado
encryptedText = encryptionCipher.doFinal(cleartext.getBytes());

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

return encryptedText;
}

public String decrypt(String password, byte[] encryptedText) {

String cleartext = "";

try {

PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray(), salt, PBE_ITERATION_COUNT, 256);

//Factoria para crear la SecretKey, debemos indicar el Algoritmo
SecretKeyFactory factory = SecretKeyFactory.getInstance(PBE_ALGORITHM);

SecretKey tmp = factory.generateSecret(pbeKeySpec);

//Creamos una llave;
SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");

//Obtenemos la llave, solo informativo
byte[] key = secret.getEncoded();

//La clase Cipher, se usa para cifrar mediante algoritmos de clave simétrica
Cipher decryptionCipher = Cipher.getInstance(CIPHER_ALGORITHM);

//byte[] iv = generateIv();

IvParameterSpec ivspec = new IvParameterSpec(iv);

//Accion, SecretKey, parameter specification for an initialization vector
decryptionCipher.init(Cipher.DECRYPT_MODE, secret, ivspec);

//Realizamos el descifrado
byte[] decryptedText = decryptionCipher.doFinal(encryptedText);

cleartext = new String(decryptedText);

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

return cleartext;
}
}

关于android - AES 算法 - 解密问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17079579/

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