C # проблема с использованием библиотек надувных замков - PullRequest
1 голос
/ 24 февраля 2010

Я пытаюсь что-то зашифровать, а затем расшифровать. Код, показанный ниже, VB, но я использую его с библиотеками C #. Я пробовал тот же код в C #, но с точно таким же исключением.

Я шифрую текст с использованием механизма RSA и файла закрытого ключа из StreamReader. Запись в консоль работает нормально, но при попытке расшифровки выдается недопустимое исключение длины блока:

Module Module1

    Sub Main()
        Dim input As String
        Dim output As String

        input = "Feb Twenty-Fourth Two Thousand Ten"
        output = EncryptKey(input)
        Console.WriteLine(DecryptKey(output) <---Error!

    End Sub

    Private Function EncryptKey(ByVal sPlain As String) As String
        Dim enc As New System.Text.UTF8Encoding
        Dim result As Byte()
        result = BouncyCastleCrypto(True, enc.GetBytes(sPlain))
        Return Convert.ToBase64String(result)
    End Function

    Private Function BouncyCastleCrypto(ByVal bForEncryption As Boolean, ByVal input As Byte()) As Byte()
        Dim bValue64 As Byte() = {0}
        Try
            Dim keypair As Greenway.PrimeResearch.Encryption.Crypto.AsymmetricCipherKeyPair
            Dim sr As New StreamReader("C:\Documents and Settings\xxxx\Desktop\test.KEY")
            keypair = New Greenway.PrimeResearch.Encryption.OpenSsl.PemReader(sr).ReadObject
            Dim cryptEngine As New Greenway.PrimeResearch.Encryption.Crypto.Encodings.Pkcs1Encoding(New Greenway.PrimeResearch.Encryption.Crypto.Engines.RsaEngine())
            cryptEngine.Init(bForEncryption, keypair.Private)
            bValue64 = cryptEngine.ProcessBlock(input, 0, input.Length)
        Catch ex As Exception
            Throw ex
        End Try

        Return bValue64
    End Function

    Private Function DecryptKey(ByVal sCipher As String) As String
        Dim enc As New System.Text.ASCIIEncoding
        Dim result As Byte()
        result = BouncyCastleCrypto(False, Convert.FromBase64String(sCipher))
        Return enc.GetString(result)
    End Function
End Module
...