0

actionscript as3crypto ライブラリで Base64 SHA1 ハッシュに署名した RSA から返された値と、C# で返された結果を一致させるのに問題があります。

バイト配列としてデコードされた Base64 ハッシュを as3crypto で提供される sign() 関数に渡し、結果を base64 エンコードします。ただし、この結果は、同じタスクを実行する ac# 関数から返された結果と決して一致しません。バイト配列レベルで機能するにもかかわらず、関数が16進数を取り込んで返すことは問題ですか?

以下の署名機能を参照して、何も見逃していないことを確認してください!

private function signHash(hashInBase64:String):String
{
       var src:ByteArray = Base64.decodeToByteArray(hashInBase64);
       var key:RSAKey = getRSAKey();
       var dst:ByteArray = new ByteArray();

       key.sign(src, dst, src.length);

       return Base64.encodeByteArray(dst);
}

AS3Crypto ライブラリの経験が豊富な人はいますか?

どんな助けでも素晴らしいでしょう!!!

ありがとう、

ジョン

4

2 に答える 2

1

あなたの C# バージョンはRSA PKCS #1 バージョン 1.5を使用していると思います。標準は、次のように構成されたバイト文字列に対して RSA 秘密鍵操作を実行することにより、署名を計算します。

0x00 0x01 || 0xff* || 0x00 || OID || hash

as3crypto コードを見ると、署名操作中に RSAKey クラスが OID を追加していないことがわかります。したがって、これを行わないと、誤った結果が得られます。

コードを見ると、as3crypto はパディングを適切に検証していないため、この攻撃に対して脆弱であることがわかります。この攻撃は 3 年以上前のものです。したがって、as3crypto とは別のライブラリを使用するのが良いようです。

于 2009-09-29T17:20:09.767 に答える
0

現在、.NET と互換性のある ActionScript 暗号化ライブラリがあります。ここにあります: http://code.google.com/p/flame。.NET とまったく同じように RSA をサポートしているようです。

于 2012-02-06T00:23:46.687 に答える