我正在为一个项目工作(使用vb.net 4.5),该项目必须使用加密密钥(将作为函数的输入参数)。
我尝试使用以下代码
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但是,在
加密器= a.CreateEncryptor(keyByte,IV)
错误是“内部错误发生”,如果我改变密码模式,它正确工作,但我必须使用OFB模式。
有什么建议吗?
发布于 2021-05-07 13:11:14
默认情况下,Aes.Create为CryptoAPI (即AesCryptoServiceProvider)创建包装器。因为CryptoAPI使用的是所谓的“密码服务提供者”,可以在Windows上安装到系统上,而且由于系统预装的密码服务提供者列表在Windows版本和版本之间也不同,所以当您使用Aes.Create时,您的代码实际上是依赖于操作系统的。因此,Aes.Create可能会产生不可预测的结果,这是不可避免的。
如果您需要完全可预见性,最好使用其他Aes实现,可能是AesManaged或任何自定义库。Aes.Create本质上依赖于操作系统。
https://stackoverflow.com/questions/30335234
复制相似问题