PHP bir Jasypt şifreli dize şifresini nasıl?

0 Cevap java

Bu imkânsız bir soru olabilir, ama PHP üzerinde Java eski bir sistem göç yaşıyorum ve ben PHP Jasypt ile şifrelenmiş dizeleri şifresini çözmek gerekiyor.

According to the documentation, Jasypt aşağıdaki algoritmayı kullanır:

  • Şifrelenecek veri rastgele bir tuz (ben bu şifre için bir başlatma vektörü olarak aynı olduğunu düşünüyorum) append
  • Tekrar tekrar 1000 kere şifrelemek
  • Şifreli dize şifresiz tuz / IV Önlerine
  • Base64 tüm dize kodlamak

Eski uygulama PBEWithMD5AndDES Jasypt algoritması kullanır. Ben MD5 şifresi için tasarlanmış olmadığını farkındayım, ve ben yapmaya çalışıyorum değil.

Ben sol kulüpler tüm MD5 hash böylece dize DES-şifresini Ben sadece istiyorum. Ben PHP dışında ikili çöp ama bir şey almak için görünmüyor olabilir. Ne eksik?

<?php

#jasypt.algorithm=PBEWithMD5AndDES
$secret = 'secret-password';
$encrypted = 'xh/roK2diJPDfZGlT9DlwuG2TsS7t7F+';

$cipher = MCRYPT_DES;

$modes = array(
  'ecb' => MCRYPT_MODE_ECB, 
  'cbc' => MCRYPT_MODE_CBC, 
  'cfb' => MCRYPT_MODE_CFB,
  'ofb' => MCRYPT_MODE_OFB, 
  'nofb' => MCRYPT_MODE_NOFB,
  'stream' => MCRYPT_MODE_STREAM,
);

foreach($modes as $mode => $mc) {

  $iv_len = 0; //mcrypt_get_iv_size($cipher, $mode);

  $password = base64_decode($encrypted);
  $salt = substr($password, 0, $iv_len);
  $data = substr($password, $iv_len);

  for($i = 0; $i < 1000; $i++) {
    $data = @mcrypt_decrypt($cipher, $secret, $data, $mode, $salt);

  }

  var_dump("$mode: $i: $data");
}

0 Cevap