我已经编写了一个由网上几种方法构建的加密例程.我正在测试加密,并注意到每个加密值以"=="结尾?
有谁知道为什么会这样?
这是我正在使用的代码.键是32个char值,IV是16个char值.
private static readonly byte[] key = Encoding.Default.GetBytes(getKey());
private static readonly byte[] iv = Encoding.Default.GetBytes("$ruVe4E!eM#kupuc");
/// <summary>
///
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static string Encrypt(string val)
{
string result = string.Empty;
var aes = getEncryptionType();
using (MemoryStream msEncrypt = new MemoryStream())
{
using (ICryptoTransform encryptor = aes.CreateEncryptor(key, iv))
{
using(CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using(StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(val);
}
}
}
result = Convert.ToBase64String(msEncrypt.ToArray());
}
aes.Clear();
return result; …Run Code Online (Sandbox Code Playgroud) 有没有人知道从任何长度的密码短语生成256位密钥值的方法?加密不能被加密,因为需要再次生成加密值并在数据库中进行比较.因此,每次加密时,值必须生成相同的加密字符串.
目前我正在使用一个32字符键来处理可能不正确的假设这是256位?
那么,我想要将"快速棕色狐狸"转换为合适的AES 256位密钥?