何かを暗号化してから復号化しようとしています。以下に示すコードは 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