php - 使用 PHP OpenSSL 解密 rijndael-128 字符串返回空
问题描述
我想用 rijdael-128 和 ECB 方法解密一个字符串。
这是在 C# 中加密字符串的代码:
static string Encrypt(string plainText, string key){
string cipherText;
var rijndael = new RijndaelManaged()
{
Key = Encoding.UTF8.GetBytes(key),
Mode = CipherMode.ECB,
BlockSize = 128,
Padding = PaddingMode.Zeros,
};
ICryptoTransform encryptor = rijndael.CreateEncryptor(rijndael.key, null);
using (var memoryStream = new MemoryStream())
{
using (var cryptoStream = new CryptoStream(memoryStream, encryptor,CryptoStreamMode.Write))
{
using (var streamWriter = new StreamWriter(cryptoStream))
{
streamWriter.Write(plaintext);
streamWriter.Flush();
}
cipherText = Convert.ToBase64String(memoryStream.ToArray());
}
}
return cipherText;
}
我想解密使用上述函数在 PHP 中使用 OpenSSL 生成的加密字符串:
function decrypt($text,$key){
$encrypted = base64_decode($text);
$decrypted = rtrim(openssl_decrypt($encrypted, 'AES-256-ECB', $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING),"\0");
return $decrypted;
}
但它返回一个空字符串。
我究竟做错了什么?
解决方案
推荐阅读
- nuxt.js - Nuxt 多个资产发射到相同的文件名热更新
- python - 使用pyquaternion旋转向量数组
- php - 如何使用 ajax 将数据属性发送到 laravel 控制器(存储在数据库中)?
- excel - IE关闭窗口并在新窗口中连接定向链接
- java - 如何为每个 recyclerview 项目的按钮添加功能?
- sql - 列出 sql server 中包含特定列的所有对象
- azure - 填充选项列表时如何在 Extension task.json 中对数据源绑定进行排序和过滤
- java - Spring Boot:@PreAuthorize 给出 403 禁止 AccessDeniedException
- php - Codeigniter XML-RPC 连接到 Odoo 域错误
- reactjs - 在反应原生的平面列表中进行检查