【问题标题】:"an internal error occurred" when using AES encryption algorithm with OFB cipher mode将 AES 加密算法与 OFB 密码模式一起使用时出现“内部错误”
【发布时间】:2015-05-19 20:10:50
【问题描述】:

我正在为一个项目工作(使用 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

但是发生了错误

加密器 = a.CreateEncryptor(keyByte, IV)

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

那么,有什么建议吗?

【问题讨论】:

  • 当我尝试在另一台机器上运行相同的代码时,它工作正常!!我的机器(Windows 8.1、.net framework 4.5 和 Visual Studio 2012),另一台机器(Windows 8 .net Framework 4.5 和 Visual Studio 2012)那么我的机器有什么问题?请帮帮我
  • 在几台机器上尝试了代码后,我注意到它在 Windows 8.1 上无法正常工作,但在 Windows 8 上可以正常工作,请问有什么建议吗??

标签: vb.net encryption aes


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-22
    • 2019-11-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多