AES 加解密:.NET 6/C# 加密,PHP 解密

今天在一个合作项目对接中遇到了不同技术平台的 AES 加解密问题,我们用的是 C#,合作方用的是 PHP,我们要把 AES 加密的密文传给合作方用 PHP 进行解密。

在这篇随笔中记录一下今天下午折腾的小成果。(2021.11.5更新了下面的代码,详见博问 遭遇奇怪的 .NET 在 Linux 上的 AES 加密问题

加解密算法用的是 aes-128-cbc,.NET 用的是最新 .NET 6 RC 2,C# 加密代码:

var aes = Aes.Create();
aes.Key = Encoding.ASCII.GetBytes(key);
var ivBytes = Encoding.ASCII.GetBytes(iv);
ReadOnlySpan<byte> plainTextBytes = Encoding.ASCII.GetBytes(plainText);
var cipherTextBytes = aes.EncryptCbc(plainTextBytes, ivBytes);
var cipherText = Convert.ToBase64String(ivBytes.Concat(cipherTextBytes).ToArray());

PHP 解密代码:

$method = 'aes-128-cbc';
$key = 'xxx';
$iv = 'yyy';

$encrypted = '密文='

$decrypted = openssl_decrypt(base64_decode($encrypted), $method, $key, OPENSSL_RAW_DATA, $iv);
$decrypted = substr($decrypted, 16);
posted @ 2021-10-26 18:59  dudu  阅读(1301)  评论(0编辑  收藏  举报