KengoSawa2の技術的ななにか

IT屋さんのようなKengoSawa2がなんかそれっぽい事を書いていくblogです

Qtの暗号化ライブラリについて

[RapidCopy] MacOSX用高速ベリファイ差分ファイルコピーソフト
RapidCopyの直接販売版の開発で、ちょっとした暗号化を施す必要があったので、調べてみました。

Qtにはハッシュ値を算出するための
QCryptographicHash Class | Qt Core 5.4
が、あります。

しかし、これはハッシュ値を算出するだけなので、暗号<->復号には使えません。

で、Qt上で簡単に暗号化<->復号化するライブラリないのかなあ。
と探してみたわけですが、結論から先に言うとまずはQCAをお試しあれです。
リンクは以下です。
Delta XMPP Project

f:id:seattlei:20150628154812p:plain

QCAは単純な暗号化<->復号化だけじゃなく、RSAみたいな公開鍵関係も扱える
LGPLライセンスの総合暗号化ライブラリです。

詳細はリンク先参照ですが、公式ホームページのバイナリが既にやや古くなっているので、
KDE QuickGit :: qca.git/summary
gitからソースを持ってきてコンパイルする方が良いと思います。
僕の目的でもあるBlowfish - Wikipedia暗号にも対応しています。
(#pkcs5パディングには非対応なので、元データは8バイトの倍数にする必要があります)

しかし、僕の環境(OS X 10.10.3)のQt Creatorのデバッグビルド動作では問題ないんですが、
リリースビルドにするとqcaのdeallocateでクラッシュするという悲しい現象が発生(´・ω・`)
色々しらべてみもしたんですが、諦めちゃいました。
OS XでQCA普通に使えてるよーって方、教えてください。。



で。気を取り直して調べなおしたところ、github
https://github.com/roop/qblowfish
f:id:seattlei:20150628161405p:plain

なるシンプルなクラスを公開している人を発見。
結局これを使いました。
8バイト倍数じゃないデータでも自動でパディングする「#PKCS5」に対応してるのがグッドです。

使い方は至ってシンプルですので、githubのサンプルを見てみてください。
気が向けば、適当なサンプルを書こうかなあと思います。