我需要与使用persits的aspEncrypt的asp平台进行通信。 任何人都可以举例说明如何使用PHP和mcrypt解码字符串,这是通过aspEncrypt例程创建的。
此链接提供了aspEncrypt的示例页面: http://support.persits.com/encrypt/demo_text.asp
因此,如果我使用文本“Test”和密钥“test”,它提供了base64编码的字符串。我需要一个php示例,使用键“test”将此编码的字符串转换回文本“Test”。
答案 0 :(得分:0)
这取决于它使用的密码,只要您知道密码和密钥就应该很容易解密,请查看mcrypt。
答案 1 :(得分:0)
如果您知道加密使用的密码和模式,函数mcrypt_decrypt
可以解密它。
答案 2 :(得分:0)
这就是我最终解决它的方式:
期望:
在我的特殊情况下,所有收到的数据都是十六进制编 这意味着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;