Hi,
ich probiere gerade ein wenig mit dem Verschlüsseln von Daten unter Java rum. Dabei wird einem bei Google als erster der Cypher ans Herz gelegt.
Da ich eine asynchrone Verschlüsselung brauche habe ich erstmal ein keypair angelegt.
So, wenn ich nun einen String verschlüssele:
bekomme ich für den gleichen String jedesmal ein anderes Ergebnis. Ich kann diese Ergebnisse auch alle wunderbar Entschlüsseln aber ich frage mich wie funktioniert das?
Wenn das Ergebnis nicht deterministisch ist, dann muss ja irgendwo ein weiteres Objekt zum Verschlüsseln hinzugezogen werden. Woher aber holt er sich das?
Kann man das auch ändern, so das das Ergebnis deterministisch ist. Das bräuchte ich nämlich um die Daten weiter verarbeiten zu können.
Gruß
Claus
ich probiere gerade ein wenig mit dem Verschlüsseln von Daten unter Java rum. Dabei wird einem bei Google als erster der Cypher ans Herz gelegt.
Da ich eine asynchrone Verschlüsselung brauche habe ich erstmal ein keypair angelegt.
Java:
public void generateKey()
{
try
{
final KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM);
keyGen.initialize(2048);
final KeyPair key = keyGen.generateKeyPair();
File privateKeyFile = new File(PRIVATE_KEY_FILE);
File publicKeyFile = new File(PUBLIC_KEY_FILE);
// Create files to store public and private key
if (privateKeyFile.getParentFile() != null)
{
privateKeyFile.getParentFile().mkdirs();
}
privateKeyFile.createNewFile();
if (publicKeyFile.getParentFile() != null)
{
publicKeyFile.getParentFile().mkdirs();
}
publicKeyFile.createNewFile();
// Saving the Public key in a file
ObjectOutputStream publicKeyOS = new ObjectOutputStream(new FileOutputStream(publicKeyFile));
publicKeyOS.writeObject(key.getPublic());
publicKeyOS.close();
// Saving the Private key in a file
ObjectOutputStream privateKeyOS = new ObjectOutputStream(new FileOutputStream(privateKeyFile));
privateKeyOS.writeObject(key.getPrivate());
privateKeyOS.close();
}
catch (Exception e)
{
Logger.Log(e.getMessage());
e.printStackTrace();
}
}
So, wenn ich nun einen String verschlüssele:
Java:
public byte[] encrypt(String text, PublicKey key)
{
byte[] cipherText = null;
try
{
// get an RSA cipher object and print the provider
Cipher cipher = Cipher.getInstance(ALGORITHM);
// encrypt the plain text using the public key
cipher.init(Cipher.ENCRYPT_MODE, key);
cipherText = cipher.doFinal(text.getBytes());
}
catch (Exception e)
{
Logger.Log(e.getMessage());
e.printStackTrace();
}
return cipherText;
}
bekomme ich für den gleichen String jedesmal ein anderes Ergebnis. Ich kann diese Ergebnisse auch alle wunderbar Entschlüsseln aber ich frage mich wie funktioniert das?
Wenn das Ergebnis nicht deterministisch ist, dann muss ja irgendwo ein weiteres Objekt zum Verschlüsseln hinzugezogen werden. Woher aber holt er sich das?
Kann man das auch ändern, so das das Ergebnis deterministisch ist. Das bräuchte ich nämlich um die Daten weiter verarbeiten zu können.
Gruß
Claus
Zuletzt bearbeitet: