アカウント名:
パスワード:
デフォルトでは暗号化しない派だが、できないと思われるのは癪なので各言語でどうするか、ぐぐって調べてみた。
私が実装するなら条件は以下にする。salt: 固定値(uuidから生成)基本sha256化ストレッチング: しない(将来の機能に期待する)
(1) JavaScript => しない。まだ無理そう。サーバ側で暗号化する(2) perl => Digest::SHA。hmac_sha256_hex(3) python => hashlib.sha256().hexdigest(4) ruby => bcrypt(5) PHP(7.0) => password_hash/verify(6) Java => 基本はHMAC-SHA-256。実装すると長そうなので割愛。
これぐらいなら30分で調べられるし、実装も難しくない。
なんでsaltが固定値なんだろうランダムが普通じゃないのかしら
それ暗号化言わない。
.NET frameworkならAesManagedクラス(System.Security.Cryptography名前空間)ですね。
参考:.NET Framework の暗号モデルhttps://docs.microsoft.com/ja-jp/dotnet/standard/security/cryptography-model [microsoft.com]
基本SHA256化ってのがイケてない。SHA256とかは高速化が容易なのでブルートフォース攻撃に弱い。なので、blowfish等の重たいパスワード向けのアルゴリズムを適切にストレッチさせて使うべき。blowfishは72文字の制約が有るからその辺は要注意だけど。
JavaScriptならbcrypt等の既存ライブラリの移植版があるから、そいつを使う手がある。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲはアレゲ以上のなにものでもなさげ -- アレゲ研究家
言語別ログイン機能パスワード処理方針 (スコア:0)
デフォルトでは暗号化しない派だが、できないと思われるのは癪なので
各言語でどうするか、ぐぐって調べてみた。
私が実装するなら条件は以下にする。
salt: 固定値(uuidから生成)
基本sha256化
ストレッチング: しない(将来の機能に期待する)
(1) JavaScript => しない。まだ無理そう。サーバ側で暗号化する
(2) perl => Digest::SHA。hmac_sha256_hex
(3) python => hashlib.sha256().hexdigest
(4) ruby => bcrypt
(5) PHP(7.0) => password_hash/verify
(6) Java => 基本はHMAC-SHA-256。実装すると長そうなので割愛。
これぐらいなら30分で調べられるし、実装も難しくない。
Re:言語別ログイン機能パスワード処理方針 (スコア:2)
なんでsaltが固定値なんだろう
ランダムが普通じゃないのかしら
Re: (スコア:0)
それ暗号化言わない。
Re: (スコア:0)
.NET frameworkならAesManagedクラス(System.Security.Cryptography名前空間)ですね。
Re: (スコア:0)
参考:
.NET Framework の暗号モデル
https://docs.microsoft.com/ja-jp/dotnet/standard/security/cryptography-model [microsoft.com]
Re: (スコア:0)
基本SHA256化ってのがイケてない。
SHA256とかは高速化が容易なのでブルートフォース攻撃に弱い。
なので、blowfish等の重たいパスワード向けのアルゴリズムを適切にストレッチさせて使うべき。
blowfishは72文字の制約が有るからその辺は要注意だけど。
JavaScriptならbcrypt等の既存ライブラリの移植版があるから、そいつを使う手がある。