Hallo,
ich versuche mit dem "javax.crypto"-Package ein passwort zu ver-und endschlüsseln. Ich benutze dabei das gleiche StandardBeispiel wie alle, nämlich das aus: javaalmanac.com -- crypto
und das sieht von mir vereinfacht so aus:
Mein Problem ist aber, dass sich der SecretKey bei jedem neuen Start verändert, weil er neu generiert wird.
Den kann ich irgendwie auch nicht fest machen.
Resultat ist das das verschlüsselte Passwort beim nächsten Start nicht mehr gültig ist.
--> Gibts irgendwie ne Möglichkeit diesen SecureKey zu initialisieren? Wenn geht ohne extra Implementation eines Fremdanbieters.
Also ich suche sowas wenn geht:
SecretKey key = new SecureKeyImpl("Der Schlüssel");
vielen Dank fürs helfen
ich versuche mit dem "javax.crypto"-Package ein passwort zu ver-und endschlüsseln. Ich benutze dabei das gleiche StandardBeispiel wie alle, nämlich das aus: javaalmanac.com -- crypto
und das sieht von mir vereinfacht so aus:
Code:
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
public class Encryption {
Cipher ecipher;
Cipher dcipher;
public Encryption(SecretKey key) throws Exception {
ecipher=Cipher.getInstance("DES");
dcipher=Cipher.getInstance("DES");
ecipher.init(Cipher.ENCRYPT_MODE, key);
dcipher.init(Cipher.DECRYPT_MODE, key);
} // end Encryption()
public String encrypt(String str) throws Exception {
// Encode the string into bytes using utf-8
byte[] utf8=str.getBytes("UTF8");
byte[] enc=ecipher.doFinal(utf8);
return new sun.misc.BASE64Encoder().encode(enc);
} // end encrypt()
public String decrypt(String str) throws Exception {
byte[] dec=new sun.misc.BASE64Decoder().decodeBuffer(str);
byte[] utf8=dcipher.doFinal(dec);
return new String(utf8, "UTF8");
} // end decrypt()
public static void main(String[] args) {
try {
SecretKey key=KeyGenerator.getInstance("DES").generateKey();
Encryption myEncryption=new Encryption(key);
String encrypted=myEncryption.encrypt("dasGeheimeWort");
System.out.println("Encrypted="+encrypted);
String decrypted=myEncryption.decrypt(encrypted);
System.out.println("Decrypted="+decrypted);
} // end try
catch(Exception e) {
} // end catch
} // end main()
} // end Encryption
Mein Problem ist aber, dass sich der SecretKey bei jedem neuen Start verändert, weil er neu generiert wird.
Den kann ich irgendwie auch nicht fest machen.
Resultat ist das das verschlüsselte Passwort beim nächsten Start nicht mehr gültig ist.
--> Gibts irgendwie ne Möglichkeit diesen SecureKey zu initialisieren? Wenn geht ohne extra Implementation eines Fremdanbieters.
Also ich suche sowas wenn geht:
SecretKey key = new SecureKeyImpl("Der Schlüssel");
vielen Dank fürs helfen