-1
일부 데이터를 암호화하여 PBEWITHSHAAND3-KEYTRIPLEDES-CBC를 사용하여 제 3 자 서비스에 보내야합니다.phpseclib를 사용하여 PBEWITHSHAAND3-KEYTRIPLEDES-CBC로 암호화
I가 타사에서 제공하는이 작업 예제 자바 코드 :
$hash = 'sha1';
$kdf = 'pkcs12';
$password = 'eKhfdPKO54OddrfgghuBGHsA5BGTYHon';
$salt = chr(-87) . chr(-101) . chr(-56) . chr(50) . chr(86) . chr(52) . chr(-29) . chr(3);
$iterations = 19;
$text = "foobar";
$cipher = new \phpseclib\Crypt\TripleDES('cbc');
$cipher->setPassword($password, $kdf, $hash, $salt, $iterations);
echo base64_encode($cipher->encrypt($text));
// Output: daAlVF+JjNg=
질문 :이 phpseclib
를 사용하여 내 (작동하지 않는) PHP 코드가
String algorithm = "PBEWITHSHAAND3-KEYTRIPLEDES-CBC";
String password = "eKhfdPKO54OddrfgghuBGHsA5BGTYHon";
byte[] salt = {-87, -101, -56, 50, 86, 52, -29, 3};
int iterations = 19;
String text = "foobar";
Provider bouncy = new org.bouncycastle.jce.provider.BouncyCastleProvider();
Security.addProvider(bouncy);
KeySpec keySpec = new PBEKeySpec(password.toCharArray(), salt, iterations);
SecretKey key = SecretKeyFactory.getInstance(algorithm, bouncy).generateSecret(keySpec);
Cipher cipher = Cipher.getInstance(algorithm, bouncy);
cipher.init(1, key, new PBEParameterSpec(salt, iterations));
System.out.println(new String(Base64.getEncoder().encode(cipher.doFinal(text.getBytes("UTF8")))));
// Output: kaxAiR1Qb9s=
입니다 : PHP 코드가 Java 코드와 동일한 결과를 내도록하려면 어떻게해야합니까?
왜 Java를 PHP로 변환 할 수 있다고 생각하십니까? – Zorkind
코드에 많은 오류가 있습니다 : - \ – Zorkind
나는 자바로 PHP를 번역하려하지 않고 PHP로 암호화하려고합니다. Java 코드는 제 3 자에 의해 참조 용으로 제공되었습니다. 두 가지 코드 모두 작동하며 수입품을 놓치고 포함합니다. – txigreman