JS で実装されたテストコードを Locust の python コードに置き換えていて、MD5 を使う必要が出てきたので備忘録としておきます。
python で md5() のような標準関数が用意されているのかと期待したのですが、結果的には hashlib のライブラリを使用する必要があります。
hashlibの読み込み
hashlib はプログラムの冒頭で import するだけです。
import hashlib
これで md5 が使えるようになります。
md5の算出
では、実際に md5 の結果を取得してみます。
1 2 3 | md5 = hashlib.md5("abcdefghijklmn".encode('utf-8')).hexdigest() print md5 |
結果は以下の通りです。
0845a5972cd9ad4a46bad66f1253581f
シェルや PHP の md5 の結果と比較してみましょう。
まずはシェルから。
1 2 3 | $ echo -n "abcdefghijklmn" | md5sum 0845a5972cd9ad4a46bad66f1253581f - |
次に PHP です。
1 2 3 | $ php -r "echo md5('abcdefghijklmn');" 0845a5972cd9ad4a46bad66f1253581f |
同じ値になりましたので、正常に動作してそうです。
shaの算出
最近は sha1 を回避して sha256 を使う流れになっていますが、こちらも確認しておきます。
1 2 3 4 5 | sha1 = hashlib.sha1("abcdefghijklmn".encode('utf-8')).hexdigest() sha256 = hashlib.sha256("abcdefghijklmn".encode('utf-8')).hexdigest() print "sha1: {}".format(sha1) print "sha256: {}".format(sha256) |
結果は以下の通りです。
sha1: 85d7c5ff403abe72df5b8a2708821ee33cd0bcce
sha256: 0653c7e992d7aad40cb2635738b870e4c154afb346340d02c797d490dd52d5f9
先ほどと同様、シェルと PHP の結果と比べてみます。
1 2 3 4 5 6 7 | $ echo -n "abcdefghijklmn" | openssl sha1 (stdin)= 85d7c5ff403abe72df5b8a2708821ee33cd0bcce $ echo -n "abcdefghijklmn" | openssl sha256 (stdin)= 0653c7e992d7aad40cb2635738b870e4c154afb346340d02c797d490dd52d5f9 |
1 2 3 4 5 6 7 | $ php -r "echo sha256('abcdefghijklmn');" 0845a5972cd9ad4a46bad66f1253581f $ php -r "echo hash('sha256', 'abcdefghijklmn');" 0653c7e992d7aad40cb2635738b870e4c154afb346340d02c797d490dd52d5f9 |
Kotlin や PHP の場合は以下の記事にまとめています。
