“指定了无效的算法”;当使用带有OFB密码模式的AES(VB.NET)时 [英] "Invalid algorithm specified" when using AES with OFB cipher mode (VB.NET)

查看:216
本文介绍了“指定了无效的算法”;当使用带有OFB密码模式的AES(VB.NET)时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须使用具有OFB密码模式的AES加密,我使用VB.NET 4.5,Windows 8和以下代码:

I have to use AES encryption with OFB cipher mode , I use VB.NET 4.5 ,windows 8 and the following code:

   Public Function DoEncryption(ByVal KeyArray() As Byte, ByVal IVArray() As Byte, ByVal Buffer As String) As Byte()
    Dim encrypted() As Byte
    Using a As Aes = Aes.Create()
        a.Mode = CipherMode.OFB

        Dim encryptor As ICryptoTransform
        encryptor = a.CreateEncryptor(KeyArray, IVArray)


        ' Create the streams used for encryption. 
        Using msEncrypt As New MemoryStream()
            Using csEncrypt As New CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)
                Using swEncrypt As New StreamWriter(csEncrypt)

                    'Write all data to the stream.
                    swEncrypt.Write(Buffer)
                End Using
                encrypted = msEncrypt.ToArray()
            End Using
        End Using
    End Using

    Return encrypted

End Function

我有一个错误无效

  swEncrypt.Write(Buffer)

有什么建议吗?

推荐答案

是的,它可以使用BouncyCastle来工作,如@Plutonix所述
使用Nuget安装BouncyCastle之后的新代码是:

Yes it works using BouncyCastle as @Plutonix mentioned my new code after install BouncyCastle using Nuget is:

Imports System.Security.Cryptography
Imports System.IO
Imports Org.BouncyCastle.Crypto
Imports Org.BouncyCastle.Security
Imports Org.BouncyCastle.Crypto.Parameters
Public Class EncryptionFunction
Public Function DoEncryption(ByVal KeyArray() As Byte, ByVal IVArray() As Byte, ByVal Buffer As Byte()) As Byte()

        Dim ae As New CipherKeyGenerator()
        ae.Init(New KeyGenerationParameters(New SecureRandom(), 256))
        Dim aesKeyParam As KeyParameter = ParameterUtilities.CreateKeyParameter("AES", KeyArray)
        Dim aesIVKeyParam As ParametersWithIV = New ParametersWithIV(aesKeyParam, IVArray)
        Dim cipher As IBufferedCipher = CipherUtilities.GetCipher("AES/OFB/NoPadding")
        cipher.Init(True, aesIVKeyParam)
        Dim encrypted() As Byte = cipher.DoFinal(Buffer)


        Return encrypted

    End Function
End Class

谢谢:)

这篇关于“指定了无效的算法”;当使用带有OFB密码模式的AES(VB.NET)时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆