しばらく忙しくて何も書けなかった…やっと落ち着いてきたので、いろいろ調べたことを書いてみます。
何となく作って見ようと思って ippsRSAEncrypt/ippsRSADecrypt を使ったコードを書いてみました。深い意味は無くて、何となく作って見たのですが…結構はまった。というか、日本語の資料がほとんどない!
まず RSA を使う場合、巨大な数を扱えるようにする必要があります。IPP の場合、Big Number Arithmetic という項目にある関数群ですね。
基本的には ippsSet_BN を使えばいいだけなのですが…これが、まずはまる原因でした。
ippsSet_BN はマニュアルを見ればわかるのですが、与えられる数が 32bit(Ipp32u) の配列です。で、最初はもらった数値をキャストして渡せばいいんだろう。と思っていたら…全然違った。
どうもエンディアンの問題で(Intel の中の人曰く)うまく動かないらしい。なので、ippsSetOctString_BNU を使って Ipp8u から Ipp32u に変換して、ippsSet_BN すれば OK。
また、IppsSet_BN を行う場合、第一引数に IppsBigNumNEG を指定しないと動きません。
でも、ippsSetOctString_BNU って、IPP 7.x からは「次のバージョンで使えなくなるよ?」みたいな警告が出るんだよね(^^ゞ
コメントを投稿する