PHP与C#间AES-128-ECB双向加解密问题求助
PHP与C# AES-128-ECB加解密互操作问题(反向操作失败)
已实现PHP加密、C#解密,但C#加密后PHP无法解密,对C#密码学模块逻辑存在困惑,参考Stack Overflow相关代码及微软RijndaelManaged官方文档后仍未解决问题。
可正常运行的代码
PHP加密代码
function encryption($json) { $encrypted= ''; $plaintext = $json; $cipher = 'AES-128-ECB'; $key = '1234567891123456'; $encrypted = openssl_encrypt($plaintext, $cipher, $key, 0); return $encrypted; echo $encrypted; }
C#解密代码
public String Decryptions(String text, String key) { //decode cipher text from base64 byte[] cipher = Convert.FromBase64String(text); //get key bytes byte[] btkey = Encoding.ASCII.GetBytes(key); //init AES 128 RijndaelManaged aes128 = new RijndaelManaged(); aes128.Mode = CipherMode.ECB; aes128.Padding = PaddingMode.PKCS7; //decrypt ICryptoTransform decryptor = aes128.CreateDecryptor(btkey, null); MemoryStream ms = new MemoryStream(cipher); CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read); byte[] plain = new byte[cipher.Length]; int decryptcount = cs.Read(plain, 0, plain.Length); ms.Close(); cs.Close(); //return plaintext in String return Encoding.UTF8.GetString(plain, 0, decryptcount); }
尝试的新C#加解密代码(存在问题)
public string Encryption(string text,string key,string privatekey) { byte[] inputtextbyteArray = System.Text.Encoding.UTF8.GetBytes(text); using RijndaelManaged aes128 = new RijndaelManaged { Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 }; using var memstr = new MemoryStream(); using var crystr = new CryptoStream(memstr, aes128.CreateDecryptor(Encoding.UTF8.GetBytes(key), Encoding.UTF8.GetBytes(privatekey)), CryptoStreamMode.Write); crystr.Write(inputtextbyteArray, 0, inputtextbyteArray.Length); return Convert.ToBase64String(memstr.ToArray()); } public string Decryption(string base64, string key, string privatekey) { try { byte[] inputtextbyteArray = Convert.FromBase64String(base64.Replace(" ", "+")); using RijndaelManaged aes128 = new RijndaelManaged { Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 }; using var memstr = new MemoryStream(); using var crystr = new CryptoStream(memstr, aes128.CreateDecryptor(Encoding.UTF8.GetBytes(key), Encoding.UTF8.GetBytes(privatekey)), CryptoStreamMode.Write); crystr.Write(inputtextbyteArray, 0, inputtextbyteArray.Length); return Encoding.UTF8.GetString(memstr.ToArray()); } catch (Exception ex) { throw new Exception("LOL NO HACKING!"); } }
遇到的错误

寻求解决方法。
内容的提问来源于stack exchange,提问作者ALQAWSI
相关产品推荐
相关产品推荐

