4

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

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

RijndaelManaged の IV ベクトルに問題があるのか​​もしれません...わかりません...

VB6 と NET の間で Rijndael/AES を使用したソリューション/経験はありますか? それともトリプルデス....

ありがとうございました

更新: 重要: vb6 アプリが実行されるマシンには、NET フレームワークがありません。そのため、Interop や COM として公開されている NET ラッパー クラスを使用することはできません。:(

4

5 に答える 5

8

.NET から相互運用機能を使用して、VB6 から C# 実装を呼び出すことができます。そうすれば、両側が同じライブラリを使用することになります。

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

于 2009-04-15T13:59:18.620 に答える
1

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

SlowAES は一種の制限があります。たとえば、ECB モードが表示されませんでした。しかし、私がテストしたものは .NET と互換性があります。

WSC ファイルのソースは利用可能です。そのソースには、VB6 から使用できる RFC2898 準拠の PBKDF2 も含まれています。したがって、パスワードからキーを設定できます。.NET のRfc2898DeriveBytesクラス と互換性があります。

関連する質問も参照してください。

于 2009-05-13T14:18:55.347 に答える
0

IVの情報を教えてくれるかもしれません。

初期化ベクトルは、暗号化ごとにランダムに生成される平文の送信データであり、ステレオタイプ ヘッダーの攻撃をより困難にするか実行不可能にします。もちろん、暗号化と復号の両方に同じ値を設定する必要があります。

また、暗号化と復号化を実行できるモードがいくつかあります。このページを見てください:ウィキペディア: ブロック暗号操作モード. また、このモードが両方で同じであることを確認する必要があります。

于 2009-04-16T08:26:08.133 に答える
0

簡単な C から C# への変換を実行できる場合は、ここが優れたソリューションです。VB6/php および C でうまく機能します。Encryption for C++, Visual Basic, php using PC1 をご覧ください。

于 2011-07-05T14:25:11.420 に答える
0

VbCorLib は、Rijndael を含む暗号化をサポートするようになりました。

無料で .NET に似ています。リンク: http://vbcorlib.blogspot.com/

于 2010-10-20T16:35:57.440 に答える