-1

C#で文字列を暗号化し、JavaScriptを使用して復号化する方法を探しています。この場合のJavaScriptは内部システムのスクリプト言語であるため、復号化に必要な秘密鍵/パスワードにアクセスする人のことを心配する必要はありません。

オンラインで解決策を検索すると、AES暗号化でうまくいくようです。私はslowAESとRijndaelManagedソリューションを調べましたが、それを機能させることができませんでした。

Cheesoが提供して同一の暗号文を受け取ったC#コードを使用しました。しかし、slowAESを使用して同じデータを暗号化しようとすると、まったく異なる暗号を受け取りました。

var testString = new Array("w", "a", "t", "s", "o", "n", "?");
var test = slowAES.encrypt(testString, slowAES.modeOfOperation.CBC, "12345678901234567890123456789012", slowAES.aes.keySize.SIZE_256, new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
alert(test.cipher);

誰かが私を正しい方向に向けることができますか?結果が出る限り、方法は気にしません。私の目標は、たとえばURLを取得することです。

www.test.com/clientid=123

.NET(C#)を使用して、次のように暗号化します

www.test.com/clientid=asdf;lkjsxd;flkjq934857u9duhfgkjhgalsdkjfh

次に、JavaScriptを使用してに変換し直します

www.test.com/clientid=123

ありがとう、ITRushn

4

3 に答える 3

0

オプション1

解決済みの問題であるサーバーとクライアント間の機密データを保護することのみを目的としている場合は、SSL を使用してください。

オプション 2

  • URL www.test.com/clientid=123 を指定すると、

  • .NET (C#) を使用して暗号化し、別の場所を指すようにします: www.mywebserver.com/forward.aspx?url=asdf;lkjsxd;flkjq934857u9duhfgkjhgalsdkjfh

  • 次に、forward.aspx ページで、復号化して www.test.com/clientid=123 にリダイレクトします。

  • その後、クライアントは HTTP リダイレクトと prest-o-done に従います。共有キーがなく、実装が簡単で、機能します。

ノート:

元のソリューションに関しては、COM またはその他の相互運用手段なしでは安全に実行できません。私がこれを言う理由は、私の知る限り、JScript が公開/秘密キーのペアにアクセスする必要があるためです。公開鍵/秘密鍵がない場合、サーバーは対称鍵をクライアントと共有する必要があります。このキーを安全に転送する手段がないため、データを保護せず、難読化しただけです。

最も簡単な方法は、SSL を使用し、次に転送 URL を使用することだと思います。

于 2009-09-24T00:50:36.360 に答える
0

暗号化/復号化操作は、バイナリ データに対して行われます。したがって、C# と JavaScript の間でそのバイナリ データを保持する必要があります。出力を base64 または 16 進数の文字列としてエンコードするのがおそらく最善の方法です。

于 2009-09-24T00:09:48.880 に答える
-6

RC4 暗号化を使用して問題を解決できました。実装の詳細については、私のブログを参照してください。

于 2009-10-17T07:56:10.650 に答える