概要
https://support.sku.id/hc/ja/articles/115004031154-世界の電子認証基準が変わる-NIST-SP800-63-3を読み解く
このドキュメントを読んで、自前で頻出パスワード管理するの辛いなーって思ったらいいサービスがありました
APIが用意されてて、パスワードをsha1でハッシュ化して先頭5文字をAPIに渡すと該当するデータをザクッと返してくれるので、5文字目以降が一致するやつを探すっていう使い方らしいです。
サンプルコード
MacbookProに入ってるRubyでは多分動いてた。
passwordchk.rb
require 'net/http'
require 'digest/sha1'
require 'json'
arg = ARGV[0]
sha1 = Digest::SHA1.hexdigest(arg)
sha1Head = sha1[0, 5]
sha1.upcase!
sha1Tail = sha1[5..-1]
url = 'https://api.pwnedpasswords.com/range/' + sha1Head
uri = URI.parse(url)
res = Net::HTTP.get(uri)
sha1List = res.split("\n")
found = sha1List.select { |hash| hash.index(sha1Tail) }
if found.count > 0 then
puts found
else
puts "not found"
end
使い方
❯ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
❯ ruby passwordchk.rb abcde
実行するとsha1ハッシュの末尾と、使用回数が返ってきます。使われてなければnot foundって言われます。
パスワードチェックしていこう。