相关疑难解决方法(0)

如何从 RijndaelManaged 升级到 AES?

我有一个用于在代码中加密/解密数据的工作解决方案(如下),但是当我将项目升级到 时DOTNET6,RijndaelManaged 就变得过时了:

警告 SYSLIB0022“RijndaelManaged”已过时:“Rijndael 和 RijndaelManaged 类型已过时。使用 Aes 代替。

SYSLIB0023“RNGCryptoServiceProvider”已过时:“RNGCryptoServiceProvider 已过时”。要生成随机数,请使用 RandomNumberGenerator 静态方法之一。

现在我想将其更改为 Aes/RandomNumberGenerator,但希望保持输出的方式与原样相同。不幸的是,我不熟悉加密/解密。

有人可以帮助我重写当前的块以使用 Aes 来代替 - 或者至少帮助我如何改变它并保持公共方法以相同的方式工作?

我有完整的代码(它按原样工作)

using System.Security.Cryptography;

namespace MyApp;

internal static class AES
{
    private static byte[] AES_Encrypt(byte[] bytesToBeEncrypted, byte[] passwordBytes)
    {
        byte[] encryptedBytes;
        byte[] saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };

        using (MemoryStream ms = new())
        {
            using RijndaelManaged AES = new(); // This reports Warning  SYSLIB0022  'RijndaelManaged' is obsolete: 'The Rijndael …
Run Code Online (Sandbox Code Playgroud)

c# cryptography aes rijndaelmanaged

19
推荐指数
1
解决办法
2万
查看次数

如何在C#/ Bouncy Castle中创建PBKDF2-SHA256密码哈希

我需要创建一个PBKDF2-SHA256密码哈希,但是遇到了一些麻烦.

我下载了Bouncy Castle的回购,但在单元测试中找到了我想要的东西.

在这里找到了一些示例代码,但这只是SHA1.代码的关键点是:

/// <summary>
/// Computes the PBKDF2-SHA1 hash of a password.
/// </summary>
/// <param name="password">The password to hash.</param>
/// <param name="salt">The salt.</param>
/// <param name="iterations">The PBKDF2 iteration count.</param>
/// <param name="outputBytes">The length of the hash to generate, in bytes.</param>
/// <returns>A hash of the password.</returns>
private static byte[] PBKDF2(string password, byte[] salt, int iterations, int outputBytes)
{
    var pdb = new Pkcs5S2ParametersGenerator();
    pdb.Init(PbeParametersGenerator.Pkcs5PasswordToBytes(password.ToCharArray()), salt,
                 iterations);
    var key = (KeyParameter)pdb.GenerateDerivedMacParameters(outputBytes * 8);
    return key.GetKey(); …
Run Code Online (Sandbox Code Playgroud)

c# hash bouncycastle password-encryption

7
推荐指数
1
解决办法
5498
查看次数

使用 AesGcm 类

我刚刚注意到 .NET Standard 2.1/.NET Core 3.0 终于添加了一个用于 AES-GCM 加密的类

然而,它的 API 似乎与通常的 .NET 加密类略有不同:它的Encrypt功能要求为密文和标签预先分配字节数组,而不是自己提供它们。不幸的是,文档中没有显示正确使用该类的示例。

我知道如何在理论上计算 AES 加密的预期密文大小,但我想知道这是否真的是“猜测”密文缓冲区大小的预期方法。通常加密库提供处理这些计算的函数。

有人有关于如何使用正确加密字节数组的示例AesGcm吗?

c# encryption aes-gcm

5
推荐指数
1
解决办法
4688
查看次数