2011-09-19 8 views
0

私は試しましたが、JavaサーバーでデコードするためにJavascriptで文字列をエンコードできませんでした。 BouncycastleアルゴリズムPBEWITHSHA256AND256BITAES-CBC-BCを使用してサーバサイドをデコードしたいとします。私は、次のコード使用してエンコードを行うにはcrypto.jsを使用してみましたBouncycastle PBEWITHSHA256AND256BITAES-CBC-BC Javascriptの実装

:しかし、これは、サーバ上で正しくデコードしない

var encrypted = Crypto.AES.encrypt("it was Professor Plum in the library with the candlestick", 
     key, 
     { mode: new Crypto.mode.CBC }); 

    var encryptedString = Crypto.util.bytesToHex(Crypto.charenc.Binary.stringToBytes(crypted)); 

は、私の推測では、SHA256を行うには、そのものですが、私はすることができます消化しようとしているものを解決してください&はいかなる文書も見つけることができません。誰もがjavascriptで暗号化を実行する方法を知っていますか?

+0

ちょうど注記:[ブラウザの暗号化JavaScriptはほとんど常に悪い考えです](http://www.matasano.com/articles/javascript-cryptography/)。 –

+0

これはブラウザそのものではなく、Unity3Dゲームです。ありがとうtho :) – Sig

+1

まだ、JavaScriptでCryptoをする代わりにTLS/SSLを使用することを考えてください。 –

答えて

1

両端ですべてを同じにする必要があります。あなたは同じ鍵が必要です。同じパディング(PKCS7を使用)が必要な同じモード(CBC)が必要で、同じIVが必要です。

パスフレーズをSHA-256で実行した後、使用している実際のキーの両端が同じであることを確認してください。 IVのヘックスもチェックしてください。デフォルトを使用しないで、使用するモードとパディングを明示的に選択します。

PBE/SHA-256が間違っていると思われる場合は、テキストパスフレーズがどのようにバイトに変換されているかを調べるとよいでしょう。もう一度、SHA-256に渡す前に両側のヘックスをチェックしてください。テキストをバイトに変換することは、一般的なエラーの原因です。 stringToBytes()が何をしているのか、またJava側で何を使っているのかは、正確にはと同じであることを確かめる必要があります。