私は、CAPICOM経由でデータを暗号化してデータベースに保存するClassic ASPで書かれたアプリケーションを持っています。暗号化コードは次のようなものになります(クラシックASP、VBを簡潔にするためにビット簡体字):データをAESで暗号化するために使用される初期化ベクトルCAPICOMを見つける方法はありますか?
set encryptObject = Server.CreateObject("CAPICOM.EncryptedData")
encryptObject.Algorithm.Name = 4 ' 4 is AES
encryptObject.Algorithm.KeyLength = ' 0 is MAX
encryptObject.SetSecret(sharedSecret) ' sharedSecret was set earlier
encryptObject.Content = stringToEncrypt
encryptedString = encryptObject.Encrypt()
を今、私はこのデータを読み取り、それを解読する必要の.NETアプリケーションを持っています。 RijndaelManaged
クラスを使用する前に、.NETでAES互換の暗号化/復号化を行っています。このデータを復号化するために同じ方法を使用できることを期待しています。しかし、RijndaelManaged
はRijndaelManaged.CreateEncryptor
を呼び出すときにキーと初期化ベクトルを渡す必要があり、CAPICOMは初期化ベクトルをとらないので、これをCAPICOMの暗号化データで動作させる方法を理解できません。私はCAPICOMが初期化ベクトルを使用していなければならないと仮定します。どのようにしてそのベクターを見つけることができますか?
これについての解決策を見つけたのか不思議です。私は同じ状況に陥っており、解読が機能するように戸惑っています! – Dave
@Dave - これは決してうまくいきませんでした。しかし、私は、Classic ASPのCAPICOMが吐き出す価値には暗号化された値以上のものが含まれていることを知りました。複雑なオブジェクト全体をさらにプロパティで暗号化しています。解読ルーチンは、正しく動作するためにオブジェクト全体を解析する必要があります。 –