微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

解密用aspEncrypt加密的php中的字符串

如何解决解密用aspEncrypt加密的php中的字符串

| 我需要与使用来自assEncrypt的ASP平台进行通信。 谁能提供一个示例,说明如何使用PHP和mcrypt解码通过aspEncrypt例程创建的字符串。 以下链接提供了aspEncrypt的示例页面: http://support.persits.com/encrypt/demo_text.asp 因此,如果我使用文本\“ Test \”和密钥\“ test \”,它将提供base64编码的字符串。我需要一个PHP示例,使用键“ test”将此编码后的字符串转换回文本“ Test”。     

解决方法

它取决于它使用的密码,只要您知道应该易于解密的密码和密钥,就看看mcrypt。     ,如果您知道加密使用的密码和方式,则功能“ 0”可以对其进行解密。 http://uk3.php.net/manual/zh/function.mcrypt-decrypt.php     ,这就是我最终解决的方法: 期望: 密钥是已知的 IV是已知的(在我的情况下,编码数据的前32个字符) 已知加密文本 在我的特殊情况下,所有接收到的数据都进行了十六进制编码。 这意味着IV和加密的文本。
function decrypt($sString,$sIv,$sKey,$iCipherAlg) {       
   $sDecrypted = mcrypt_decrypt($iCipherAlg,$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,32));
$sEncodedData = substr($sEncodedData,32);
$sEncodedRaw = hex2bin($sEncodedData);
$sDecrypted = decrypt($sEncodedRaw,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,$sContent,$sIv));
$sFullEncodedText = bin2hex($sIv) . $sEncrypted;
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。