【发布时间】:2015-08-04 05:10:56
【问题描述】:
我目前正在尝试将简单的 AES 代码从 C# 转换为 Python。我对这两种语言都很熟悉,但我对加密领域(尤其是 AES)一无所知。我之前在 C# 中编写了这个 AES 代码,但现在我不知道如何让它在 Python 中工作(我正在使用 PyCrypto,因为 Python2.7 没有内置的 AES)。下面是我的 C# 代码:
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);
}
}
}
请注意,我还希望 BlockSize = 128、KeySize = 256、Padding = PKCS7 和 Cipher CBC for Python。提前致谢!
【问题讨论】:
-
您只发布了 C# 版本。你的哪一部分 Python 代码不起作用?
-
@Carsten 嗨,我忘了澄清一下,我想获得有关将此 C# 转换为 Python 代码的帮助。我试图查看 PyCrypto 文档,但没有任何关于使用 PKCS7 填充/取消填充的内容。另外,我对 AES 加密的东西一无所知。
标签: c# python encryption aes pycrypto