/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 というサービスですでにプロダクション利用しています。