0

persits の aspEncrypt を使用する asp プラットフォームと通信する必要があります。aspEncrypt ルーチンを介して作成された PHP と mcrypt を使用して文字列をデコードする方法の例を誰でも提供できますか。

aspEncrypt のサンプル ページは、次のリンクから入手できます: http://support.persits.com/encrypt/demo_text.asp

したがって、テキスト「Test」とキー「test」を使用すると、base64 でエンコードされた文字列が提供されます。キー「test」を使用して、このエンコードされた文字列をテキスト「Test」に変換するphpの例が必要です。

4

3 に答える 3

0

これが私が最終的にそれを解決した方法です:

期待:

  • キーは既知です
  • IVは既知です(私の場合、エンコードされたデータの最初の32文字)
  • 暗号化されたテキストは既知です

私の特別なケースでは、すべての受信データは16進数でエンコードされています。これは、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;
于 2011-04-21T14:37:07.140 に答える
0

使用する暗号によって異なります。暗号と鍵を知っている限り、 mcryptを見てください。復号化は簡単です。

于 2011-04-15T12:01:32.770 に答える
0

暗号化で使用される暗号とモードがわかっている場合、関数mcrypt_decryptはそれを復号化できます。

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

于 2011-04-15T12:01:33.850 に答える