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