I'm attempting to encrypt something then decrypt it. The code shown below is VB but I'm using it with the C# libraries, I've tried the same code in C# as well with the exact same exception thrown.
I'm encrypting the text using the RSA engine and the private key file from streamreader. Writing that to the console works fine, but the invalid block length exception is thrown when I try to decrypt it:
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