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);


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM