我正在寻找如何生成AES键和IV中的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个节目。
请帮我一个人。谢谢...
使用 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再次解密数据,因此您必须能够以某种方式将其恢复。
Aes
类具有内置功能来执行此操作。aes.GenerateKey()
用新的随机键替换了当前密钥(尺寸aes.keysize)。aes.GenerateIV()
用新的随机iv替换了当前的IV(块大小,始终为AES 16字节)。
请注意,AES类的默认实例已经具有随机生成的密钥和一个随机生成的IV。
(此答案实际上适用于任何SymmetricAlgorithm
键入.net)。