Mam za zadanie zastąpienie starszego systemu java czymś, co uruchamia PHP.Zastępowanie JAVA z PHP dla szyfrowania PKCS5
Trochę utknąłem na zastąpieniu kryptografii java kodem PHP.
cipherAlgorythm = "PBEWithMD5AndDES";
cipherTransformation = "PBEWithMD5AndDES/CBC/PKCS5Padding";
PBEParameterSpec ps = new javax.crypto.spec.PBEParameterSpec(salt, iterations);
SecretKeyFactory kf = SecretKeyFactory.getInstance(cipherAlgorythm);
SecretKey key = kf.generateSecret(new javax.crypto.spec.PBEKeySpec(password.toCharArray()));
Cipher encryptCipher = Cipher.getInstance(cipherTransformation);
encryptCipher.init(Cipher.ENCRYPT_MODE, key, ps);
byte[] output = encryptCipher.doFinal("This is a test string".getBytes("UTF-8"));
wydaje się wnętrzności Java
W PHP robie
$hashed_key = pbkdf2('md5', $this->key, $this->salt, $this->reps , <GUESS 1>, TRUE);
$output = mcrypt_encrypt(MCRYPT_DES, $hashed_key, "This is a test string", MCRYPT_MODE_CBC, <GUESS 2>);
PBKDF2 jest od here.
So <GUESS 1>
jest rozmiar klucza i <GUESS 2>
jest IV . Grałem z nimi bezskutecznie. Czy ktoś ma sugestię co do takich wartości? O ile widzę, samo szyfrowanie powinno być przenośne, ale nie jestem pewien, co dzieje się w niektórych metodach Java.
Wygląda na to, że java tworzy gdzieś IV, ale nie rozumiem, jak i gdzie.
ZWIĄZANE
Decrypt (with PHP) a Java encryption (PBEWithMD5AndDES)