【发布时间】:2021-09-05 08:46:33
【问题描述】:
我在 python 中使用 AES 函数进行了加密:
def encrypt_text(self):
raw = self.PKCS7_padding()
iv = Random.new().read(self.block_size)
cipher = AES.new(self.key, AES.MODE_CBC, iv)
encrypted = base64.b64encode(iv + cipher.encrypt(raw))
return encrypted
然后填充:
def PKCS7_padding(self):
return self.text+chr(16-len(self.text)%16)*(16-len(self.text)%16)
但是当我将它发送到这个 c# 函数时
public static string DecryptString(string key, string cipherText)
{
byte[] iv = new byte[16];
byte[] buffer = Convert.FromBase64String(cipherText);
using (Aes aes = Aes.Create())
{
aes.Key = Convert.FromBase64String(key);
aes.IV = iv;
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (MemoryStream memoryStream = new MemoryStream(buffer))
{
using (CryptoStream cryptoStream = new CryptoStream((Stream)memoryStream, decryptor, CryptoStreamMode.Read))
{
using (StreamReader streamReader = new StreamReader((Stream)cryptoStream))
{
return streamReader.ReadToEnd();
}
}
}
}
}
说我发送“hello world” 我收到了我发送的字符串加上随机的非 pritable 字符的奇怪组合。例如:“�Ȯ�Ŗf�”��Xhello world”
密钥生成如下:
key = base64.b64encode(os.urandom(32))
return key.decode()
我没有收到任何错误但奇怪的文字任何想法谢谢!如果您有任何问题,请随时提出
【问题讨论】:
-
@Topaco 我如何添加分隔符?