"发生内部错误"使用带有OFB密码模式的AES加密算法时

时间:2015-05-19 20:10:51

标签: vb.net encryption aes

我正在为一个项目(使用vb.net 4.5)工作,该项目必须使用密钥进行AES加密(将作为该函数的输入参数提供)

我尝试使用以下代码

Imports System.Security.Cryptography
Imports System.Text
Public Class EncryptionFunction
    Public Function DoEncryption(ByVal keyByte() As Byte, IV() As Byte)
        Dim a As Aes = Aes.Create
        a.Mode = CipherMode.OFB

        Dim encryptor As ICryptoTransform

        encryptor = a.CreateEncryptor(keyByte, IV)


    End Function
End Class

中发生了错误
  

encryptor = a.CreateEncryptor(keyByte,IV)

错误是"发生内部错误" ,如果我改变密码模式它可以正常工作,但我必须使用OFB模式。

那么,有什么建议吗?

1 个答案:

答案 0 :(得分:0)

Aes.Create 默认为 CryptoAPI 创建包装器(即 AesCryptoServiceProvider)。因为 CryptoAPI 使用所谓的“加密服务提供程序”,除了系统服务提供程序之外,这些服务提供程序还可以安装在 Windows 上,而且系统预安装的加密服务提供程序列表因 Windows 版本和版本而异,所以当您使用 Aes.Create 时,您的代码实际上是依赖于操作系统的。所以,Aes.Create 可能会产生不可预知的结果,这是不可避免的。

如果您需要完全的可预测性,最好使用其他 Aes 实现,可能是 AesManaged 或任何自定义库。 Aes.Create 本质上依赖于操作系统。