1
我正在嘗試將簡單的AES代碼從C#轉換爲Python。我非常瞭解這兩種語言,但我不知道加密字段(特別是AES)。我之前在C#中編寫了這個AES代碼,但現在我不知道如何使它在Python中工作(我使用PyCrypto,因爲Python2.7沒有內置的AES)。下面是我的C#代碼:C#AES CBC PKCS7到Python
using System.Collections;
using System.Text;
using System.Security.Cryptography;
namespace DefaultClasses
{
public class SimpleAES
{
private const string KEY = "someKey";
private const string IV = "someIV";
private AesCryptoServiceProvider _aes;
private ICryptoTransform _crypto;
public SimpleAES()
{
_aes = new AesCryptoServiceProvider();
_aes.BlockSize = 128;
_aes.KeySize = 256;
_aes.Key = ASCIIEncoding.ASCII.GetBytes(KEY);
_aes.IV = ASCIIEncoding.ASCII.GetBytes(IV);
_aes.Padding = PaddingMode.PKCS7;
_aes.Mode = CipherMode.CBC;
}
public string encrypt(string message)
{
_crypto = _aes.CreateEncryptor(_aes.Key, _aes.IV);
byte[] encrypted = _crypto.TransformFinalBlock(
ASCIIEncoding.ASCII.GetBytes(message), 0, ASCIIEncoding.ASCII.GetBytes(message).Length);
_crypto.Dispose();
return System.Convert.ToBase64String(encrypted);
}
public string decrypt(string message)
{
_crypto = _aes.CreateDecryptor(_aes.Key, _aes.IV);
byte[] decrypted = _crypto.TransformFinalBlock(
System.Convert.FromBase64String(message), 0, System.Convert.FromBase64String(message).Length);
_crypto.Dispose();
return ASCIIEncoding.ASCII.GetString(decrypted);
}
}
}
請注意,我想也有塊大小= 128,密鑰長度= 256,填充= PKCS7和密碼CBC爲Python。感謝進步!
你只發布了C#版本。你的哪部分Python代碼不起作用? – Carsten
@Carsten你好,我忘了澄清,我想獲得幫助,將這個C#翻譯成Python代碼。我試圖查看PyCrypto文檔,但沒有關於使用PKCS7填充/解壓縮的說明。另外,我不知道AES加密的東西。 – Tim
[使用PyCrypto AES 256加密和解密]的可能重複(http://stackoverflow.com/questions/12524994/encrypt-decrypt-using-pycrypto-aes-256) –