AES键和IV生成16个字符长度



我正在寻找如何生成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)。

最新更新