将c#aes方法重写为python有问题吗?

2024-09-26 17:55:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用c#将这个方法重写为python,但是python和所有的在线密码器都给了我一个c#无法给出的结果

演示键:55BE4F94FFCA8A40CB78ED8E3BEF6FC0
演示四:2E4F5C8A4E5E8E5F
演示数据:测试
返回c#:x0wOQpG0MpeUdkVjPi/O4Dw+9Mst+lyPzXYC7kryJnY=(base64)
python中的return:xTr+FvQRyUIfbrVq8RIn/Q==(在base64中)

    public static string encode(string string_0, string string_1, string string_2)
    {
        UTF8Encoding utf8Encoding = new UTF8Encoding();
        byte[] bytes = utf8Encoding.GetBytes(string_1);
        byte[] bytes2 = utf8Encoding.GetBytes(string_2);
        byte[] inArray;
        using (RijndaelManaged rijndaelManaged = new RijndaelManaged())
        {
            try
            {
                rijndaelManaged.Padding = PaddingMode.PKCS7;
                rijndaelManaged.Mode = CipherMode.CBC;
                rijndaelManaged.KeySize = 256;
                rijndaelManaged.BlockSize = 256;
                rijndaelManaged.Key = bytes;
                rijndaelManaged.IV = bytes2;
                MemoryStream memoryStream = new MemoryStream();
                using (CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndaelManaged.CreateEncryptor(bytes, bytes2), CryptoStreamMode.Write))
                {
                    using (StreamWriter streamWriter = new StreamWriter(cryptoStream))
                    {
                        streamWriter.Write(string_0);
                    }
                    inArray = memoryStream.ToArray();
                    var str = System.Text.Encoding.Default.GetString(inArray);
                }
            }
            finally
            {
                rijndaelManaged.Clear();
            }
        }
        return Convert.ToBase64String(inArray);
    }

编辑:添加python代码

import base64

from Cryptodome.Cipher import AES
from pkcs7 import PKCS7Encoder


key = b'55BE4F94FFCA8A40CB78ED8E3BEF6FC0'
IV = b'2E4F5C8A4E5E8E5F'
data = 'test'

aes = AES.new(key, AES.MODE_CBC, IV)
print(base64.b64encode(aes.encrypt(bytes(PKCS7Encoder().encode(data), "utf8"))))

Tags: importnewstringreturnbytesbyteaesusing

热门问题