Hallo,
Ich bin auf der Suche nach der Mac TripleDES Verschlüsselung in Java.
MACTripleDES-Klasse (System.Security.Cryptography)
Gibt es eine Implementierung in Java die äquivalent zu MACTripleDES.MACTripleDES(Byte()) ist?
Ich muss leider genau diesen Algorithmus verwenden da Passwörter mit diesem Algorithmus in einer Datenbank stehen und ich die mit Java vergleichen muss ;(
Beim googeln bin ich auf folgendes gestoßen:
nur wenn ich den Schlüssel entsprechend anpasse kommt leider ein anderes ergebniss raus ;(
Hat da jemand Erfahrung mit Triple DES in Java?
Vielen Dank für Antworten
Ich bin auf der Suche nach der Mac TripleDES Verschlüsselung in Java.
MACTripleDES-Klasse (System.Security.Cryptography)
Gibt es eine Implementierung in Java die äquivalent zu MACTripleDES.MACTripleDES(Byte()) ist?
Ich muss leider genau diesen Algorithmus verwenden da Passwörter mit diesem Algorithmus in einer Datenbank stehen und ich die mit Java vergleichen muss ;(
Beim googeln bin ich auf folgendes gestoßen:
Java:
import java.io.UnsupportedEncodingException;
import java.security.InvalidAlgorithmParameterException;
import java.security.spec.InvalidKeySpecException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import javax.crypto.spec.IvParameterSpec;
public class CryptoUtil {
private Cipher ecipher;
private Cipher dcipher;
private String algorithm = "DESede";
private String transformation = "DESede/CBC/PKCS5Padding";
private String keyPhrase = "123456789012345678901234"; //your keyphrase 24 bit
private SecretKey key;
private IvParameterSpec iv;
private static CryptoUtil cryptoUtil;
public static CryptoUtil getInstance() { //Singleton
if (cryptoUtil == null)
cryptoUtil = new CryptoUtil();
return cryptoUtil;
}
private CryptoUtil() {
try {
DESedeKeySpec keySpec = new DESedeKeySpec(keyPhrase.getBytes());
key = SecretKeyFactory.getInstance(algorithm).generateSecret(keySpec);
iv = new IvParameterSpec(new byte[8]);
ecipher = Cipher.getInstance(transformation);
dcipher = Cipher.getInstance(transformation);
ecipher.init(Cipher.ENCRYPT_MODE, key, iv);
dcipher.init(Cipher.DECRYPT_MODE, key, iv);
} catch (InvalidKeySpecException e) {
} catch (javax.crypto.NoSuchPaddingException e) {
} catch (java.security.NoSuchAlgorithmException e) {
} catch (java.security.InvalidKeyException e) {
} catch (InvalidAlgorithmParameterException e) {
}
}
@SuppressWarnings({"restriction", "hiding"})
public String encrypt(String str) {
try {
// Encode the string into bytes using utf-8
byte[] utf8 = str.getBytes("UTF8");
// Encrypt
byte[] enc = ecipher.doFinal(utf8);
// Encode bytes to base64 to get a string
return new sun.misc.BASE64Encoder().encode(enc);
} catch (javax.crypto.BadPaddingException e) {
} catch (IllegalBlockSizeException e) {
} catch (UnsupportedEncodingException e) {
} catch (java.io.IOException e) {
}
return null;
}
@SuppressWarnings("restriction")
public String decrypt(String str) {
try {
// Decode base64 to get bytes
byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str);
// Decrypt
byte[] utf8 = dcipher.doFinal(dec);
// Decode using utf-8
return new String(utf8, "UTF8");
} catch (javax.crypto.BadPaddingException e) {
} catch (IllegalBlockSizeException e) {
} catch (UnsupportedEncodingException e) {
} catch (java.io.IOException e) {
}
return null;
}
}
nur wenn ich den Schlüssel entsprechend anpasse kommt leider ein anderes ergebniss raus ;(
Hat da jemand Erfahrung mit Triple DES in Java?
Vielen Dank für Antworten