Tôi đã được giao nhiệm vụ thay thế một hệ thống java kế thừa bằng một cái gì đó chạy PHP.Thay thế JAVA bằng PHP để mã hóa PKCS5
Tôi đang gặp khó khăn khi thay thế mật mã java bằng mã 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"));
Có vẻ là ruột của Java
Trong PHP tôi đang làm
$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 là từ here.
Vì vậy <GUESS 1>
là kích thước chính và <GUESS 2>
là IV . Tôi đã chơi xung quanh với những điều này không có kết quả. Có ai có đề xuất cho các giá trị như vậy? Theo như tôi có thể thấy bản thân mã hóa nên được di chuyển nhưng tôi không chắc chắn về những gì đang xảy ra trong một số phương pháp Java.
Dường như java đang tạo IV ở đâu đó, nhưng tôi không hiểu cách thức hoặc địa điểm.
CÓ LIÊN QUAN
Decrypt (with PHP) a Java encryption (PBEWithMD5AndDES)