public static String doGenerate() {
int val = 10000000;
Random r = new Random();
int gen = r.nextInt(89999999);
int gen1 = r.nextInt(89999999);
gen = val + gen;
gen1 = val + gen1;
String reply = gen + "" + gen1;
return reply;
}
這是我用來生成密鑰的方法,我需要用於下面給出的AES算法。Java - SHA-256散列:無效的AES密鑰長度:64字節
public static void decryptFile(String keyString, String fileName){
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128);
SecretKey key = (SecretKey) new SecretKeySpec(
keyString.getBytes(), "AES");// kgen.generateKey();
AESEncrypter encrypter = new AESEncrypter(key);
encrypter.decrypt(new FileInputStream(
new java.io.File("").getCanonicalFile() +
File.separator + "Received"+
File.separator + fileName),
new FileOutputStream(new java.io.File("").getCanonicalFile() +
File.separator + "Decrypted" +
File.separator + fileName));
} catch (Exception e) {
e.printStackTrace();
}
}
這是AESEncrypter方法。
public AESEncrypter(SecretKey key) {
// Create an 8-byte initialization vector
byte[] iv = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f };
AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv);
try {
ecipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
dcipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
// CBC requires an initialization vector
ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
} catch (Exception e) {
e.printStackTrace();
}
}
解密後,我得到一個無效鍵例外:java.security.InvalidKeyException:無效的AES密鑰長度:64個字節。這是爲什麼發生?有沒有解決方案?
64字節它說.. – 2013-02-22 06:41:30