2

NTE_NO_MEMORY を返す CryptVerifySignature に問題があります (操作中に CSP がメモリ不足になりました)。

OpenSSL で生成された署名を検証しようとしています。すでに PEM 公開鍵をデコードし、バイト シーケンスを逆にしてインポートしました。

MS Enhanced Provider を明示的に指定しようとしましたが、キーの長さは 4096 ビット (最大 16384 ビット未満) です。

メモリ アラインメントの問題を示唆するコメントをフォーラムで見たことがありますが、私は Intel Pentium デュアル コアを使用しており、バッファは 32 ビット アラインされています。

以前にこの問題を見た人はいますか?

4

1 に答える 1

0

この問題は RSA_private_encrypt を使用することで解決されることを知っておくとよいでしょう。私の場合はあなたの逆です。CryptSignHash を使用して署名し、RSA_verify を使用して検証しました。

同じデータに対して CryptSignHash と RSA_sign によって生成される署名のバイト順が完全に逆になっていることに気付きました。このリンクをチェックしてください。

バイトを逆にしてみて、うまくいくかどうかを確認してください。

CryptSignHash を使用した署名と RSA_verify を使用した検証に成功し、完全に機能しています。

于 2013-04-13T15:45:00.853 に答える