Ens*_*der 14 .net c# cryptography rijndaelmanaged .net-core
我们如何在.Net Core类库中使用Rijndael加密?(不是.Net Framework类库)我们需要创建一个共享的.Net Core库,用于多个项目,并且需要实现在项目中使用相同Rijndael加密的Encrypt和Decrypt方法.
我们目前正在使用:
似乎.Net Core 1.0版本中缺少Rijndael和AES的实现...它似乎只包括基类.我们如何获得Rijndael或AES加密的.Net Core实现作为新的.Net核心类库项目的参考?
以下是在.Net Framework 4.5.2中使用的Encrypt方法:
public static string Encrypt(string valueToEncrypt, string symmetricKey, string initializationVector)
{
string returnValue = valueToEncrypt;
var aes = new System.Security.Cryptography.RijndaelManaged();
try
{
aes.Key = ASCIIEncoding.ASCII.GetBytes(symmetricKey);
aes.IV = ASCIIEncoding.ASCII.GetBytes(initializationVector);
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.ISO10126;
var desEncrypter = aes.CreateEncryptor();
var buffer = ASCIIEncoding.ASCII.GetBytes(valueToEncrypt);
returnValue = Convert.ToBase64String(desEncrypter.TransformFinalBlock(buffer, 0, buffer.Length));
}
catch (Exception)
{
returnValue = string.Empty;
}
return returnValue;
}
Run Code Online (Sandbox Code Playgroud)
bar*_*njs 24
Rijndael和AES之间的差异(在.NET中)是Rijndael允许块大小改变,但AES不允许.由于RijndaelManaged的默认块大小与AES块大小(128位/ 16字节)相同,实际上您使用的是AES.
而不是按名称实例化实现类型,只需使用factory(Aes.Create()
).这适用于.NET Core和.NET Framework.
其他值得一提的事情:
using
语句中使用它们.desEncryptor
)都是IDisposable,您应该在using
语句中使用它们.aes.GenerateIV()
如果对多个操作使用相同的对象,则调用)并将其与密文一起呈现.因此,加密需要密钥和明文,并产生密文和IV.Decrypt采用(密钥,IV,密文)并生成明文. 归档时间: |
|
查看次数: |
18962 次 |
最近记录: |