17

Bing Cashback の実装に取り​​組んでいます。Bing からの着信要求が有効であることを確認するために、署名が提供されます。署名は、RSA を使用して暗号化された URL の 160 ビット SHA-1 ハッシュです。

Microsoft は RSA の「公開鍵」、モジュラス、指数を提供しており、これを使用してハッシュを復号化することになっています。

Microsoft が言うように、ハッシュを復号化するために必要な Java キー オブジェクトを作成する方法はありますか?

私が見つけることができるものはすべて、RSAキーペアを自動的に作成します。これは、RSAが機能するはずだからです。可能であればJavaオブジェクトを使用したいと思っています。これは、手作業でコーディングしたソリューションよりも明らかに信頼性が高いためです。

彼らが提供したサンプル コードは .NET であり、.NET ライブラリ関数を使用してハッシュを検証します。具体的には RSACryptoServiceProvider.VerifyHash()

4

3 に答える 3

3

java.security.spec.RSAPublicKeySpec を使用します。指数とモジュラスからキーを構築できます。次に、キー仕様をパラメータとして java.security.KeyFactory.generatePublic() を使用します。

于 2010-01-07T20:57:53.420 に答える
0

このような何かがうまくいくはずです:

  private PublicKey convertPublicKey(String publicKey) throws Exception{
    PublicKey pub = null;

    byte[] pubKey = Hex.decodeHex(publicKey.toCharArray());
    X509EncodedKeySpec pubSpec = new X509EncodedKeySpec(pubKey);
    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    pub = (RSAPublicKey) keyFactory.generatePublic(pubSpec);

    return pub;
  }

これは、公開鍵が 16 進文字列として指定されていることを前提としており、 Apache Commons Codec ライブラリが必要になります。

別の形式のキーがある場合は、KeyFactoryを試して詳細を確認してください。

于 2010-01-07T20:56:15.580 に答える