私が実際にやろうとしているのは、JACOB を介して Java アプリケーション内から VB.NET で AES を使用することであるため、私の問題は実際には VB.NET で AES を使用する方法よりも少し複雑です。しかし今のところ、私が注目する必要があるのは、AES の実装そのものです。
これが私の暗号化コードです
Public Function EncryptAES(ByVal toEncrypt As String, ByVal key As String) As Byte()
Dim keyArray = Convert.FromBase64String(key)
Dim toEncryptArray = Encoding.Unicode.GetBytes(toEncrypt)
Dim aes = New AesCryptoServiceProvider
aes.Key = keyArray
aes.Mode = CipherMode.ECB
aes.Padding = PaddingMode.ISO10126
Dim encryptor = aes.CreateEncryptor()
Dim encrypted = encryptor.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length)
aes.Clear()
Return encrypted
End Function
Java コードに戻ったら、バイト配列を 16 進数の String に変換します。
さて、プロセスを逆にするために、これが私の復号化コードです
Public Function DecryptAES(ByVal toDecrypt As String, ByVal key As String) As Byte()
Dim keyArray = Convert.FromBase64String(key)
Dim toDecryptArray = Convert.FromBase64String(toDecrypt)
Dim aes = New AesCryptoServiceProvider
aes.Key = keyArray
aes.Mode = CipherMode.ECB
aes.Padding = PaddingMode.ISO10126
Dim decryptor = aes.CreateDecryptor()
Dim decrypted = decryptor.TransformFinalBlock(toDecryptArray, 0, toDecryptArray.Length)
aes.Clear()
Return decrypted
End Function
復号化コードを実行すると、次のエラー メッセージが表示されます
パディングが無効であり、削除できません。