我正在搜索如何在vb.net中生成AES密钥和IV
http://programmers-en.high-way.info/vb/aes.html
如上所述,有AesIV和AesKey的声明
但我不想为AesIV和AesKey使用硬编码。
Private Const AesIV As String = "!QAZ2WSX#EDC4RFV"
Private Const AesKey As String = "5TGB&YHN7UJM(IK<"
我想要做的是我想自动生成随机密钥和IV,就像上面的例子一样,自动生成完全相同的16字符 请帮帮我一个人。感谢...
答案 0 :(得分:2)
使用RNGCryptoServiceProvider
生成加密强序列。
Imports System.Security.Cryptography
Public Function GenerateKey(ByVal Length As Integer) As Byte()
Dim ReturnArray(Length - 1) As Byte
Using RNG As New RNGCryptoServiceProvider
RNG.GetBytes(ReturnArray)
End Using
Return ReturnArray
End Function
使用示例:
AES.Key = GenerateKey(16)
AES.IV = GenerateKey(16)
注意:您必须使用完全相同的密钥和IV再次解密数据,因此您必须能够以某种方式将其恢复。
答案 1 :(得分:2)
Aes
类具有内置功能来执行此操作。 aes.GenerateKey()
用新的随机密钥替换当前密钥(大小为aes.KeySize)。 aes.GenerateIV()
用一个新的随机值替换当前的IV(块大小,对于AES总是16个字节)。
请注意,Aes类的默认实例已经有一个随机生成的密钥和一个随机生成的IV。
(这个答案实际上适用于.NET中的任何SymmetricAlgorithm
类型。)