C# で暗号化 JavaScript で復号化
-
16-09-2019 - |
質問
C#で文字列を暗号化し、JavaScriptを使用してそれを復号化する方法を探しています。この場合の JavaScript は内部システム用のスクリプト言語であるため、復号化に必要な秘密キー/パスワードに他人がアクセスすることを心配する必要はありません。
オンラインで解決策を検索すると、AES暗号化がうまくいくようです。調べてみました lowAES および Rijndael マネージド ソリューション, 、しかし、うまく機能させることができませんでした。
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
解決 3
私はRC4暗号化を使用して、私の問題を解決するために管理してきました。あなたは私のに実装に関する詳細な情報を得ることができますブログで。
他のヒント
暗号化/復号化動作は、バイナリデータを発生します。したがって、あなたは、C#とJavaScriptの間のバイナリデータを保存する必要があります。 BASE64または16進数の文字列として出力をエンコードする、おそらくそれを行うための最善の方法である。
オプション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 を使用することだと思います。