Chcę zaszyfrować ciąg za pomocą AES z moim własnym kluczem. Ale mam problem z długością klucza. Czy możesz przejrzeć mój kod i zobaczyć, co muszę naprawić/zmienić.Java AES i używanie mojego własnego klucza
public static void main(String[] args) throws Exception {
String username = "[email protected]";
String password = "Password1";
String secretID = "BlahBlahBlah";
String SALT2 = "deliciously salty";
// Get the Key
byte[] key = (SALT2 + username + password).getBytes();
System.out.println((SALT2 + username + password).getBytes().length);
// Need to pad key for AES
// TODO: Best way?
// Generate the secret key specs.
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
// Instantiate the cipher
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encrypted = cipher.doFinal((secrectID).getBytes());
System.out.println("encrypted string: " + asHex(encrypted));
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] original = cipher.doFinal(encrypted);
String originalString = new String(original);
System.out.println("Original string: " + originalString + "\nOriginal string (Hex): " + asHex(original));
}
Teraz otrzymuję wyjątek "Nieprawidłowy klucz AES Długość: 86 bajtów". Czy muszę podeprzeć mój klucz? Jak mam to zrobić?
Czy muszę ustawić cokolwiek dla EBC lub CBC?
Dzięki
[znajdę swój brak losowej soli niepokojące] (http://d37nnnqwv9amwr.cloudfront.net/photos/images/newsfeed/000/065/003/Darth-Vader-I-FIND- TWOJE-BRAKU-WIARA-DISTURBING.jpg). Teraz poważnie: w kontekście kryptografii [SALT powinna być losowa] (http://en.wikipedia.org/wiki/Salt_ (kryptografia)) –
Haha, zabawne. Właściwie to mam losową sól, ale wyczyściłem kod, aby moje pytanie było bardziej przejrzyste. Dlatego zmienna nazywa się SALT2. Ale dobre referencje dla innych, którzy napotykają ten sam problem i lubią kopiować/wklejać kod. –