作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我们如何在 .Net Core 类库中使用 Rijndael 加密? (不是 .Net Framework 类库)我们需要创建一个共享的 .Net Core 库以用于多个项目,并且需要实现在项目中使用相同的 Rijndael 加密的加密和解密方法。
我们目前正在使用:
似乎 .Net Core 1.0 版本中缺少 Rijndael 和 AES 的实现……它似乎只包含基类。我们如何将 Rijndael 或 AES 加密的 .Net Core 实现添加为对新 .Net Core 类库项目的引用?
下面是适用于 .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;
}
最佳答案
Rijndael 和 AES 之间的区别(在 .NET 中)是 Rijndael 允许更改 block 大小,但 AES 不允许。由于 RijndaelManaged 的默认 block 大小与 AES block 大小(128 位/16 字节)相同,实际上您使用的是 AES。
无需按名称实例化实现类型,只需使用工厂 (Aes.Create()
)。这适用于 .NET Core 和 .NET Framework。
其他值得一提的事情:
using
语句中使用它们。desEncryptor
)都是 IDisposable,您应该在 using
语句中使用它们。aes.GenerateIV()
如果使用同一个对象进行多次操作)并将其与密文一起呈现。因此,加密采用 key 和明文并生成密文和 IV。解密获取( key 、IV、密文)并生成明文。关于c# - 如何将 Rijndael 加密与 .Net Core 类库一起使用? (不是 .Net 框架),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38333722/
我是一名优秀的程序员,十分优秀!