/etc/shadow などで使われるハッシュ関数、 crypt(3) を Go 言語で実装しました

はじめに

こんにちは yosida95 です。 UNIX や Linux ではユーザーパスワードのハッシュ関数として crypt(3) が使われています。 この crypt(3) を Pure Go で実装したのでご紹介します。

経緯

もともとは jeramey/go-pwhash という実装があり、こちらの開発が滞っていたため、 kless 氏がフォークした kless/crypt で開発が行われていました。

この kless/crypt に存在したいくつかのバグを修正するために、昨年の春に Pull Request を送ってマージしてもらったのが、ぼくの crypt 開発の始まりです。

今年になって再び kless/crypt に幾つものバグを見つけたためパッチを送ろうと思った所、 kless/crypt がレポジトリごと消えていました。

jeramey/go-pwhash の開発は前述のとおり滞っていて、 jeramey/go-pwhash はコピーレフト条項のない修正 BSD ライセンスで配布されていました。

それらを踏まえて、この度ぼくが乗っ取って開発を継続することにしました。 そして、ぼくがこれまでに見つけたバグの修正がすべて終わりましたので、ここにご報告させていただきました。

実績

この GehirnInc/crypt は、 Gehirn RS2 Plus というサービスですでにプロダクション利用しています。

おわりに

GehirnInc/crypt は修正 BSD ライセンスのオープンソースソフトウェアです。 不具合などのご報告やパッチをお待ちしています。

よろしくお願いします。