我正在使用.NET Cryptography库来加密/解密某些文本。我想在加密期间为用户生成初始化向量(IV)和Salt,以便他们需要提供的只是Pass-Phrase。一旦文本被加密,我将向用户呈现Salt值和初始化向量,以便他们可以将它们传递给消息的接收者。
如何在实际加密步骤之外使用.NET生成salt和Initialization Vector(IV)?目前我创建的加密/解密方法接受salt和初始化向量作为参数,如Strings。
我尝试使用以下代码生成初始化向量,但返回值的大小总是回到大于AES中初始化向量所需的16个字节。
Dim rng As New RNGCryptoServiceProvider()
Dim buff As Byte() = New Byte(15) {}
rng.GetBytes(buff)
Return Convert.ToBase64String(buff)
答案 0 :(得分:1)
IV的大小由您使用的算法决定(例如,16个字节)。这意味着字节数组大小是固定的,而不是您从中构建的字符串。除非可以将字符串转换为具有所需大小的正确字节数组,否则不能将字符串作为IV传递。