2009-04-15 27 views
4

VB6でバイト配列を暗号化し、C#(NET 2.0)で復号化する必要があります。とviceversa(C#からVB6)。C#からVB6へのRijndael/AES

C#ではRijndaelManagedクラスを使用しました。 VB6で私はインターネットから無料の部分を使用しました。最高のhttp://www.frez.co.uk/freecode.htm#rijndael のようですが、2つの実装は、同じ入力から始まる異なる出力を生成する:(

おそらくそれはRijndaelManagedにおけるIVベクトルとの問題だ...私は理解していない...

?VB6とネットまたはトリプルDESの間でラインダール/ AESを使用して任意のソリューション/経験....

UPDATEありがとう:だから私は相互運用機能を使用することはできませんマシンVB6のアプリを実行すると、NETないフレームワークを持っています。重要および/またはCOMとして公開されているNETラッパークラス:(

+1

それ以外の方法ではできませんか?私。 VB6の実装をC#アプリケーション用のCOMとして公開しますか? –

答えて

8

.NETからのinteropを使用してVB6からC#の実装を呼び出すことができます。そうすれば、両者は同じライブラリを使用するでしょう。

ここではいくつかの追加情報です:http://msdn.microsoft.com/en-us/library/hfzzah2c(vs.71).aspx

+0

私は2番目のMr. Barnwell - COM Interopも私の選択です。 –

+0

他のものはすべて私にとっては匂いのようですが、VB6では.NET COMオブジェクトを消費するという問題があります。デバッガはプログラムファイルからvb6.exeとしてアセンブリを読み込み、デバッガはCOMオブジェクトを見つけますGACまたはプログラムファイルにあります。 – flipdoubt

0

たぶん私はあなたにIVに関するいくつかの情報を与えるだろうが。

初期化ベクトルはクリアテキストの送信データで、各暗号化ごとにランダムに生成して、ステレオタイプヘッダを攻撃するのが難しくなるか不可能にするかを指定します。もちろん、encrypterとdecrypterの両方に同じ値が設定されていなければなりません。

また、暗号化と復号化が実行されるいくつかのモードがあります。このページをご覧ください:Wikipedia: Block cipher modes of operationまた、このモードが両方のモードで同じであることを確認する必要があります。

1

AESのJavascript実装であるSlowAESを取得し、Windows Script Componentに埋め込んでCOM経由でアクセスできるようにしました。 COMクライアントからコンポーネントに呼び出すことができました。私はVisual Studio 6を持っていないのでVB6を試しませんでした。しかし、私が試したCOMクライアントでは、.NETと完全に互換性がある暗号化が見つかりました。同じキーを使用すると、RijndaelManaged() 、モード、およびキーのサイズを変更します。

SlowAESは制限があります。私は例えばECBモードを見なかった。しかし、私がテストしたものは.NETと互換性があります。

The source for the WSC file is available。このソースには、VB6から使用可能なRFC2898準拠のPBKDF2も含まれています。パスワードからパスワードを設定することができます。 .NETのRfc2898DeriveBytesクラスと互換性があります。

また、a related questionを参照してください。

0

VbCorLibは今、暗号化をサポートしていますが、ラインダールは含まれています。

無料で.NETのようなものです。リンク:http://vbcorlib.blogspot.com/

0

単純なCからC#への変換を行うことができれば、ここでは素晴らしいソリューションです。それはVB6/phpとCでうまく動作しますEncryption for C++, Visual Basic, php using PC1を見てください。

関連する問題