mcryptdecrypt php,如何将mcrypt_decrypt转换为PHP中的openssl_decrypt?

博客作者在尝试将PHP代码中的mcrypt加密转换为使用OpenSSL解密时遇到问题。他们分享了现有代码片段,包括加密和解密函数。虽然在本地服务器上使用mcrypt可以成功解码,但使用OpenSSL总是返回错误结果。讨论中提到了加密模式的安全性问题,建议避免使用ECB模式。作者寻求社区的帮助以解决OpenSSL解密的不匹配问题。
摘要由CSDN通过智能技术生成

$key='09KzF2qMBy58ZWg137N$I4h6UwJvp!ij';

$encrypted='Chttex_vuYYEK-oKQfwYrVCZYbnNh3tMgwGuK-VOsvt7TjF5M6MIcsE6e8DynZrHuxrmtmIpiN215WygdO-hzXnmx45RXzBWdxk_MkIvNoI=';

$encrypted = urlsafe_b64decode($encrypted);

$decrypted = decrypt($encrypted, $key);

$inflated = gzinflate($decrypted);

echo 'Decrypted: '.$inflated."
";

function urlsafe_b64decode($data) {

return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));

}

function decrypt($data, $key)

{

return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB);

}

我在PHP7并试图此使用OpenSSL转换。我拿串,并通过现有的“urlsafe_b64decode”功能运行它,然后创造了另一个“解密”功能:

function decrypt($string, $key)

{

return openssl_decrypt($string, 'AES-256-ECB', $key);

}

我认为这将是一个相当简单的1对1的转换,但它总是返回“假”。任何想法我可能做错了什么? 在此先感谢!

编辑: 由于我使用的服务是一个.NET店,这里是他们的.NET例如用于加密,如果有帮助的。

Public Shared Function Encrypt(ByVal data As Byte()) As Byte()

Dim encrypted As Byte()

Using rijAlg = New System.Security.Cryptography.AesManaged()

rijAlg.Key = Encoding.ASCII.GetBytes("encryptionkeyhere")

rijAlg.Padding = System.Security.Cryptography.PaddingMode.None

rijAlg.Mode = System.Security.Cryptography.CipherMode.ECB

Dim encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV)

Using msEncrypt = New MemoryStream()

Using csEncrypt = New System.Security.Cryptography.CryptoStream(msEncrypt, encryptor, System.Security.Cryptography.CryptoStreamMode.Write)

csEncrypt.Write(data, 0, data.Length)

End Using

encrypted = msEncrypt.ToArray()

End Using

End Using

Return encrypted

End Function

更新2 所以我更新了我的本地服务器有mcrypt的,并且能加密的字符串从我的初始代码段进行解码。这是所期望的回应:“会话ID = 7bf727043d85e6963e640fb541d886a7454f8091 &的requestId = 1488925528”

googleing和计算器,荷兰国际集团和实验后,我仍然无法正确解密字符串中使用OpenSSL的。它甚至有可能吗?

+0

为什么不简单地使用Mcrypt解码你的字符串,然后用OpenSSL重新加密它? –

+0

不幸的是,它是一个PHP7服务器,我无法安装mcrypt扩展或更改ini文件。 –

+0

不要使用ECB模式,这是不安全的,请参阅[ECB模式](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_Codebook_.28ECB.29),向下滚动到企鹅。 取而代之的是将CBC模式与随机IV一起使用,只是将加密数据与IV一起用于解密,并不需要保密。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值