Hallo,
hat jemand Erfahrung mit AES Verschlüsselung?
Ich muss eine Java AES-Verschlüsselungsfunktion auf PHP portieren.
ganz Unten der Ansatz, komme aber leider nicht weiter.
Java Code
==========
(Werte wurden geändert)
PHP Code
==========
erster Ansatz ?
wie muss ich diese SecretKeySpec und Date Funktionen anwenden ??
und was hat es mit dem ISO10126PADDING auf sich ?
hat da jemand Erfahrung ?
hat jemand Erfahrung mit AES Verschlüsselung?
Ich muss eine Java AES-Verschlüsselungsfunktion auf PHP portieren.
ganz Unten der Ansatz, komme aber leider nicht weiter.
Java Code
==========
(Werte wurden geändert)
Code:
// private key
private final static String KEY = "bfjrntmgkh34n576jdz67mfu";
// init vector
private final static String IV = "fngjtme45igklumh67m";
// date format
private final static String DATE_FORMAT = "yyyyMMdd";
// name of algorithm
private final static String ALGORITHM = "AES";
// specification of encryption
private final static String ENCRYPTION = ALGORITHM + "/CBC/ISO10126PADDING";
public String encrypt(String inputString) throws Exception {
Calendar calendar = Calendar.getInstance();
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
DateFormat formatObj = new SimpleDateFormat(DATE_FORMAT);
formatObj.setTimeZone(utcTimeZone);
String utcStr = formatObj.format(calendar.getTime());
String initVectorStr = MessageFormat.format(IV, utcStr);
byte [] key = CustomBase64.decode(KEY);
byte [] iv = CustomBase64.decode(initVectorStr);
SecretKeySpec keySpec = new SecretKeySpec(key, ALGORITHM);
IvParameterSpec ivSpec = new IvParameterSpec(iv);
Cipher cipher = Cipher.getInstance(ENCRYPTION);
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
byte [] input= inputString.getBytes();
byte [] output = new byte[cipher.getOutputSize(input.length)];
int ptLength = cipher.update(input, 0, input.length, output, 0);
ptLength += cipher.doFinal(output, ptLength);
String result = CustomBase64.encode(output);
result = result.replaceAll("\r", "").replaceAll("\n", "").replaceAll("\t", "");
return result;
}
PHP Code
==========
erster Ansatz ?
wie muss ich diese SecretKeySpec und Date Funktionen anwenden ??
und was hat es mit dem ISO10126PADDING auf sich ?
hat da jemand Erfahrung ?
PHP Code:
function encryptAES($data,$key,$iv) {
// Setzt den Verschlüsselungsalgorithmus
$cp = mcrypt_module_open('rijndael-128', '', 'cbc', '');
// Ermittelt die Anzahl der Bits, welche die Schlüssellänge
// des Keys festlegen
$ks = mcrypt_enc_get_key_size($cp);
// Erstellt den Schlüssel, der für die Verschlüsselung genutzt wird
$key = substr(md5($key), 0, $ks);
// Initialisiert die Verschlüsselung
mcrypt_generic_init($cp, $key, $iv);
// Verschlüsselt die Daten
$encrypted = mcrypt_generic($cp, $data);
// Deinitialisiert die Verschlüsselung
mcrypt_generic_deinit($cp);
// Schließt das Modul
mcrypt_module_close($cp);
return $encrypted;
}
Comment