1

AES-OpenSSLでメッセージを暗号化し、.NET(C#またはVB)で復号化する方法を知る必要があります。または、AES-OPENSSLとAES-.NETの違いを知る必要があります。

ありがとうございました!

VB.NETのコード

Public Function AES_Decrypt(ByVal prm_key As String, ByVal prm_iv As String, ByVal prm_text_to_decrypt As String)

    Dim sEncryptedString As String = prm_text_to_decrypt

    Dim myRijndael As New RijndaelManaged
    myRijndael.Padding = PaddingMode.Zeros
    myRijndael.Mode = CipherMode.CBC
    myRijndael.KeySize = 256
    myRijndael.BlockSize = 256

    Dim key() As Byte
    Dim IV() As Byte

    key = System.Text.Encoding.ASCII.GetBytes(prm_key)
    IV = System.Text.Encoding.ASCII.GetBytes(prm_iv)

    Dim decryptor As ICryptoTransform = myRijndael.CreateDecryptor(key, IV)

    Dim sEncrypted As Byte() = Convert.FromBase64String(sEncryptedString)

    Dim fromEncrypt() As Byte = New Byte(sEncrypted.Length) {}

    Dim msDecrypt As New MemoryStream(sEncrypted)
    Dim csDecrypt As New CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)

    csDecrypt.Read(fromEncrypt, 0, fromEncrypt.Length)

    Return (System.Text.Encoding.ASCII.GetString(fromEncrypt))

End Function
4

2 に答える 2

1

AESはAESです。実装に互換性があることを確認する NIST テスト ベクトルがあり、バイト オーダーも指定されています。したがって、正しいモード (CBC または認証済み GCM モードなど) とパディング モード (CBC の場合は PKCS#7、GCM の場合は「なし」) を選択することになります。正しいキーと IV を選択してください。AES の入力を理解するように細心の注意を払ってください。特に、エンコーディングと文字エンコーディング、および乱数生成を理解していることを確認してください。

于 2013-02-21T20:54:49.087 に答える