Расшифруйте строку в php, которая была зашифрована с помощью aspEncrypt - PullRequest
0 голосов
/ 15 апреля 2011

Мне нужно связаться с платформой asp, которая использует aspEncrypt из персидских сообщений. Может кто-нибудь привести пример, как декодировать строку с PHP и mcrypt, которая была создана с помощью процедур aspEncrypt.

Пример страницы aspEncrypt доступен по этой ссылке: http://support.persits.com/encrypt/demo_text.asp

Так что, если я использую текст «Тест» и клавишу «тест», он предоставляет строку в кодировке base64. Мне нужен пример php, который преобразует эту закодированную строку обратно в текст «Test» с использованием ключа «test».

Ответы [ 3 ]

0 голосов
/ 15 апреля 2011

Если вам известны шифр и режим, используемые шифрованием, функция mcrypt_decrypt может его расшифровать.

http://uk3.php.net/manual/en/function.mcrypt-decrypt.php

0 голосов
/ 21 апреля 2011

Вот как я наконец решил:

Expectation:

  • Ключ известен
  • IV известен (в моем случае, первые 32 символа закодированных данных)
  • Зашифрованный текст известен

В моем особом случае все полученные данные закодированы в шестнадцатеричном формате. Это означает IV и зашифрованный текст.

function decrypt($sString, $sIv, $sKey, $iCipherAlg) {       
   $sDecrypted = mcrypt_decrypt($iCipherAlg, $sKey, $sString, MCRYPT_MODE_CBC, $sIv);
    return trim($sDecrypted);
}

function hex2bin($sData) {
    $iLen = strlen($sData);
    $sNewData = '';
    for($iCount=0;$iCount<$iLen;$iCount+=2) {
        $sNewData .= pack("C",hexdec(substr($sData,$iCount,2)));
    }
    return $sNewData;
} 

$sKey = 'this is my key';
// first 32 chars are IV
$sIv = hex2bin(substr($sEncodedData, 0, 32));
$sEncodedData = substr($sEncodedData, 32);
$sEncodedRaw = hex2bin($sEncodedData);
$sDecrypted = decrypt($sEncodedRaw, $sIv, $sKey, MCRYPT_RIJNDAEL_128);

Соответствующее шифрование работает так:

$sIv = mcrypt_create_iv(mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
$sKey = 'this is my key';
$sContent = 'a lot of content';
$sEncrypted = bin2hex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $sKey, $sContent, MCRYPT_MODE_CBC, $sIv));
$sFullEncodedText = bin2hex($sIv) . $sEncrypted;
0 голосов
/ 15 апреля 2011

Это зависит от того, какой шифр он использует, взгляните на mcrypt , пока вы знаете, что шифр и ключ должны легко расшифровываться.

...