You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:55:18