2009-07-28 6 views
0

背景:私は、サーバー側で復号化される必要がある、クライアント側のJavaScriptを使用して暗号化していたデータを持っている相互運用性を保証するためにJavascript AESライブラリを.NETに移植するにはどうすればよいですか?

私の知る限り、私が使用しているJavaScriptのAESライブラリは、C#、ラインダールライブラリと相互運用しません。

このように、私は基本的にC#でjavascript AESを実装して使用するようになりました。

私は、DLLの中にjavascriptの使用jsc.exeをコンパイルし、リフレクタは私にいくつかの時間を節約することができるかどうかを確認しようとするつもりです。

私はJScriptのは、JavaScriptのと同じではないことを認識してんだけど、私は私がawefully近い作品何かを離れて得ることができます願っていて、ちょうど手動touchupsを行います。

問題:

私はJSCを使用してJavaScriptをコンパイルすると、私は次のエラーを取得する:

error JS1234: Only type and package definitions are allowed inside a library

問題のある行は、次のコード行で、この最初の行です:

var GibberishAES = (function(){ 
    var Nr = 14, 
    /* Default to 256 Bit Encryption */ 
    Nk = 8, 
    Decrypt = false, 

    enc_utf8 = function(s) 
    { 
     try { 
      return unescape(encodeURIComponent(s)); 
     } 
     catch(e) { 
      throw 'Error on UTF-8 encode'; 
     } 
    }, 

    dec_utf8 = function(s) 
    { 
     try { 
      return decodeURIComponent(escape(s)); 
     } 
     catch(e) { 
      throw ('Bad Key'); 
     } 
    }, 

そして、完全なソースは、found hereことができます。

問題の内容がわかりません。また、JavascriptとC#の間でデータを暗号化/復号化する方法についての提案もあります。

+0

私は答えはありませんが、なぜクライアントとサーバーの間の暗号化に対処するためにHTTPSを使用できないのか不思議です。 – Alconja

+0

あなたが指定した行はあまり意味がなく、完全な記述ではないので、問題が何であるかは分かりません。コードの行数を増やすことは可能でしょうか? – kanngard

+0

@Alconja:残念ながら、私はクライアントとサーバーの間でSSLを使用することについて何も制御していません。一部のクライアントはSSLを設定しますが、他のクライアントは設定しません。したがって、すべての機密データは、送信のためにクライアント側で暗号化されなければならない。 @kanngard:さて、私は更新し、さらに完全なjsファイルへのリンクを追加しました。 ありがとう! – Alan

答えて

1

あなただけのJavaScriptからAESを行いたい場合は、slowAESを試してみたのですか? It worked for me.。私はslowAESと組み込みのRijndaelまたはAESクラス間の良い相互運用性を.NETで発見しました。また、クラスデザインは自然で使いやすく理解しやすいことがわかりました。これは、JavascriptからJScriptへの移植を必要としません。

パスワードベースのキー導出は、実際にはSlowAESによって処理されません。それが必要な場合は、the PBKDF2 implementation from Parvez Anandamをお勧めします。 I also have used that、それはうまく動作します。

AnandamのPBKDF2と組み合わせたslowAESをテストしたとき、CBCモードのC#のRijndaelManagedクラスと良好な相互運用性を示しました。

「slowAES」という名前で延期しないでください。遅くはありません。それはJavascriptなので「遅い」という名前です。

slowAESのようなクリーンで互換性のあるものを使用できない場合は、jscコンパイラを試す前に、既存のjavascriptコードをWindows Script Componentにパッケージ化することをお勧めします。 WSCを使用すると、スクリプトロジックをCOMコンポーネントとしてパッケージ化し、.NETアプリケーションを含むCOM対応環境で使用できるようになります。ここにはa post that shows how to package slowAES as a WSCがあります。何らかの理由で

はない多くの人々は、あなたがCOMコンポーネントとしてスクリプトコードをパッケージ化することができることを認識しているが、それは10年前から出回っています。それはあなたにとって珍しいかもしれませんが、ポートをやっています。 WSC内のコードは、Javascript.NETではなくJavascriptです。

+0

提案していただきありがとうございます!私は弾丸を噛んで、ポートをやりました。意外にも、特にデバッガの助けを借りて、それほど悪くはありませんでした。あなたが提案したWSCメソッドを使用して蹴ったが、私はパフォーマンスを恐れていた。 – Alan

0

今日もこの問題がありました。私は解決策につまずいてしまいます。use package theNameSpace { class Whatever { function func() { return "the results"; } } }

関連する問題