結論
オプション -nosalt
を付与する。
具体例
1. -nosalt
を付与しない場合
一見同じ結果に見えますが、全て異なっています。
$ echo "hogehoge" | openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar
U2FsdGVkX19a4H6vBEvUMPTyd+Q7/27pFzaPQctnCfs=
$ echo "hogehoge" | openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar
U2FsdGVkX185H8E7L8WsVniwiJ3GvRImdiv3shuooj0=
$ echo "hogehoge" | openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar
U2FsdGVkX1/6b22prbaq0g2/KN0ROK1fxB8cYPtPEPU=
2. -nosalt
を付与した場合
$ echo "hogehoge" | openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar -nosalt
6/9Uo+v1TK/NbZ2BO5yPtw==
$ echo "hogehoge" | openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar -nosalt
6/9Uo+v1TK/NbZ2BO5yPtw==
$ echo "hogehoge" | openssl enc -e -aes-256-cbc -base64 -pbkdf2 -pass pass:foobar -nosalt
6/9Uo+v1TK/NbZ2BO5yPtw==
冪等にしたい動機
冪等にしたいのは(もちろん)diff が出るようにしたいからです。現実に運用するとなると一手間かかりますが、秘匿値を Git 管理のもとで取り扱いたいときには冪等な暗号化(復号化)は有用かと思います*1。