2016-11-22 20 views
0

私の署名を確認したい。私はこのコードを使用しますデジタル署名を確認する

var encoder = new UTF8Encoding(); 
    byte[] bytesToVerify = encoder.GetBytes(LoginChallenge); 
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); 
RSAKeyInfo.Modulus = publickey1; 
rsa.ImportParameters(RSAKeyInfo); 
    bool suc = rsa.VerifyData(bytesToVerify, CryptoConfig.MapNameToOID("SHA1"), signedBytes); 

私はバイト配列形式で公開鍵を持っています。それは私のdbにあります。常にこの

enter image description here

偽= SUCのように。私はbytetoverifyがメソッド値の入力値と同じ値を持っていると確信しています。

私のsignメソッド:私はこのように私の生成、公開鍵を知らない

Signature signature=Signature.getInstance(Signature.ALG_RSA_SHA_PKCS1,false); 
     signature.init(thePrivateKey,Signature.MODE_SIGN); 
     signLength=signature.sign(buffer,(short)(ISO7816.OFFSET_CDATA & 0xFF), inputlength, buffer, (short)(0)); 

     apdu.setOutgoingAndSend((short)0,signLength); 

は、問題や記号が問題を持っています。私はsh1とpkcs1を使っていますが、私はsh1しか見つけていません。

すべての体は私を助けますか?

+0

**任意の**形式は、コンピュータ上のバイト配列形式です。より具体的で、あなたが試したことを示す必要があります。すべてのバイトを16進数で表示するとよいでしょう。それは* public *キーですよね? –

+0

お返事ありがとうございます。はい私は画像としてSQL Serverに公開鍵を保存しました。私はそれをフェッチして、それをrsaパラメータに変換したい。私はdbの公開鍵を見ることができません。それはimageのようなものです。そして、それは16進形式です – Fatemeh

答えて

0

あなたは何をデータベースに保存しましたか?モジュラス値だけ?

RSA公開鍵には、ModulusとExponentの2つのフィールドがあります。彼らは、キーのインポートと操作を成功させるために必要です。

これまでに作成されたRSAキーの99.999993%では、指数値はnew byte[] { 0x01, 0x00, 0x01 }です。だからほとんどいつもはModulus値だけを保存して、何を仮定すればExponentであるかを知ることができます。

最良の結果を得るためには、または、少なくとも指数値が0x010001でない場合、登録時にキーを拒否します。あなたがロードしていることを確認するために、インポート・ロジックがエクスポート・ロジックと一致することを確認する必要がありますが(正しい値に)指数を設定する必要が

  • だから、本当にこれはに降りてきます/同じものを同じ場所に保存する。

+0

ありがとうございました。私はdb – Fatemeh

関連する問題