Verschlüsselung mit AES-256-Java
Ich habe diesen einfachen code, dass ich im internet gefunden.. im lernen dieses Zeug von der Verschlüsselung/Entschlüsselung.. dieser code scheint zu funktionieren, aber ich etwas nicht verstehe... warum nach dem "c.doFinal()" (das ist für die ver - /entschlüsseln (AES-256) dieser Kerl codieren/decodieren verschlüsselter Wert, mit BASE64? dessen nicht genug, nur durch die Verwendung von AES?
`private static final String ALGO = "AES";
private static final byte[] keyValue =
new byte[] { 'T', 'h', 'e', 'B', 'e', 's', 't', 'S', 'e', 'c', 'r','e', 't', 'K', 'e', 'y' };
public static String encrypt(String Data) throws Exception {
Key key = generateKey();
Cipher c = Cipher.getInstance("AES");
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(Data.getBytes());
String encryptedValue = new BASE64Encoder().encode(encVal);
return encryptedValue;
}
public static String decrypt(String encryptedData) throws Exception {
Key key = generateKey();
Cipher c = Cipher.getInstance(ALGO);
c.init(Cipher.DECRYPT_MODE, key);
byte[] decordedValue = new BASE64Decoder().decodeBuffer(encryptedData);
byte[] decValue = c.doFinal(decordedValue);
String decryptedValue = new String(decValue);
return decryptedValue;
}
private static Key generateKey() throws Exception {
Key key = new SecretKeySpec(keyValue, ALGO);
return key;
}
public static void main(String[] args) throws Exception {
String data = "SOME TEXT";
String dataEnc = AES.encrypt(data);
String dataDec = AES.decrypt(dataEnc);
System.out.println("Plain Text : " + data);
System.out.println("Encrypted Text : " + dataEnc);
System.out.println("Decrypted Text : " + dataDec);
}`
Dank!!
- Dies ist eigentlich mit einer 128-bit-AES, nicht 256. Der Schlüssel 16 Byte, die 16 bytes * 8 bits pro byte = 128-bit-Schlüssel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die verschlüsselten Daten zurückgegeben
doFinal
ist Binär, und es kann also nicht gedruckt werden (er erscheint wie ein Haufen Kauderwelsch.) Die Base64-Codierung konvertiert die Binär-zu einer Reihe von ASCII-Zeichen, das macht es leicht lesbar und macht es auch möglich, die verschlüsselten Daten in Situationen, in denen nur der Klartext-Daten verwendet werden können.Die Base64-Codierung nicht fügt keine zusätzliche Verschlüsselung oder Sicherheit, es macht einfach die verschlüsselten Daten nutzbar in Situationen, in denen Sie nicht verwenden können, binäre.
Den daraus resultierenden AES-256 verschlüsselte Wert enthalten einige ungewöhnliche Zeichen, die, wenn Sie gedruckt werden, oder über das internet gesendet, geändert werden kann, oder missverstanden, abgeschnitten oder ersetzt werden, während der übertragung oder visuelle Darstellung.
Base64 bietet einen Mechanismus zum ver - /entschlüsseln-Werte, so dass Sie "Reisen", ohne dass der Inhalt verändert wird. Der Benutzer, der schrieb, dieser code, den Sie gefunden, wahrscheinlich müsste lagern oder transportieren Sie diesen Wert.
Können Sie es selbst zu versuchen, und überprüfen Sie die resultierende Zeichenfolge, bevor Sie verschlüsselt und Base64.
Weil doFinal() liefert ein byte-array und bytes sind in der Regel schwer zu begreifen. Abgesehen von diesem Programm macht eine AES-128 nicht AES-256.