著作一覧 |
最近、今頃になってCAPIと格闘している。
で、世の中、SHA-*`や対称鍵を使った暗号化/復号の用例は山ほどあるのに、RSAの例が少ない。多分、RSAを使うようなのはインフラに組み込まれていて、アプリケーションが自分で利用しないからだろうなぁとか想像してみたりする。
ところが、RSAを使うときに出てくる関数がやたらと使い出がある。
CryptStringToBinaryとCryptBinaryToStringだ。
この2つの関数は純粋にCAPIの中でヘルパという位置づけなのか、CryptAcquireContextを事前に呼び出してハンドルを用意したりせずにすぐに使える。
何に使えるかといえば、Base64、ニブル形式文字列(バイト列"\0\13AB"を"00134142"で表現するなどのように4ビット単位に0-FでASCII化したもの)などの文字列-バイト列の相互変換だ。
もちろんRSAの鍵に使うのが元々用意した理由だと思うので、当然のようにPEMをそのまま与えることができる。しかも、CRYPT_STRING_ANYというフラグを与えれば、PEM、プレーンなBase64、バイナリのどれでも勝手にバイト列化するなど、変換指定のフラグもやたらと用意されている(なんでorしたり+したりせずに、山ほど定数を定義しているのかは謎だが、おそらくIntelliSenceで選択しやすさだろう)。
が、CEのCAPIには含まれていなかった。残念。
ジェズイットを見習え |