我们通常会注重密钥的保护,如果密钥不小心被攻击者窃取,那么就有可能会泄漏数据,对此,我们应该对密钥进行派生加密。
推荐使用PBKDF2(Password-Based Key Derivation Function 2)算法作为密钥派生算法。PBKDF2是一种基于密码的密钥派生函数,通常用于从密码生成密钥。
using System;
using System.Security.Cryptography;
using System.Text;
public class KeyDerivation
{
/// <summary>
/// PBKDF2派生密钥算法
/// </summary>
/// <param name="password">原始的密钥</param>
/// <param name="salt">盐值:增加派生密钥的随机和唯一性</param>
/// <param name="iterations">迭代次数</param>
/// <param name="keySize">密钥长度</param>
/// <returns></returns>
public static byte[] DeriveKey(string password, byte[] salt, int iterations, int keySize)
{
using (var deriveBytes = new Rfc2898DeriveBytes(password, salt, iterations))
{
return deriveBytes.GetBytes(keySize / 8);
}
}
}
代码简洁又好用。