バナナでもわかる話

計量経済学・統計学が専門の大学院生です。統計学・経済学・投資理論・マーケティング等々に関する勉強・解説ブログ。ときどき趣味も。極力数式は使わずイメージで説明出来るよう心掛けていますが、時々暴走します。

RとPythonでハッシュ値を出力する方法

少し前にハッシュ値について記事を書きました。
bananarian.hatenablog.com




実はRとPythonを使ってハッシュ値を出力することも出来ます。

今回も「banana」を入力してハッシュ値を出してみます。


Rの場合

opensslパッケージというパッケージで簡単に出力することが出来ます。

install.packages("openssl")


opensslパッケージには様々なハッシュ関数が用意されており、sha1やmd5など有名なものもいくつかあります。

>library(openssl)
> sha1("banana")
[1] "250e77f12a5ab6972a0895d290c4792f0a326ea8"
> sha224("banana")
[1] "8f5901a4a0a2d72ff9882e63c08d4c32b3eaa3683b6e5bfc0ca03e86"
> sha256("banana")
[1] "b493d48364afe44d11c0165cf470a4164d1e2609911ef998be868d46ade3de4e"
> sha384("banana")
[1] "92f7818b31b9936b90a5178e811979ef3ba68a14b57e8362424d54446f31ad2a249e4306628ad33ccb28b3e9dc5e043e"
> sha512("banana")
[1] "f8e3183d38e6c51889582cb260ab825252f395b4ac8fb0e6b13e9a71f7c10a80d5301e4a949f2783cb0c20205f1d850f87045f4420ad2271c8fd5f0cd8944be3"
> sha2("banana", size = 256)
[1] "b493d48364afe44d11c0165cf470a4164d1e2609911ef998be868d46ade3de4e"
> md4("banana")
[1] "f1fbbfb6277cbf01e27d61238a72491a"
> md5("banana")
[1] "72b302bf297a228a75730123efef7c41"
> blake2b("banana")
[1] "d4afa3130126ddcc01bb49e1388b0fbc94c185d1a07a67046a5b66923c38e178f490bc9b91a7e41c2d670be3c8435e5914b5cb5ee0d0ff52d9a783f601b18794"
> blake2s("banana")
[1] "228c3a8526197e63044a1654a9407707d7e250a7ccac489d3cad024ce6cd9ad7"
> ripemd160("banana")
[1] "e8f92e55b15aec83f458cfee39dd4ffeb7f4b8ed"

Pythonの場合

デフォルトでhashlibというメソッドがあるので、これを利用します。

hasulibメソッドにある各ハッシュ関数に対応するモジュールを次のような形で使ってやれば、ハッシュ値が出力されます。

>>> import hashlib
>>> PW="banana"
>>> print("MD5のハッシュ値:", hashlib.md5(PW.encode("utf-8")).hexdigest() )
MD5のハッシュ値: 72b302bf297a228a75730123efef7c41
>>> print("sha384のハッシュ値:", hashlib.sha384(PW.encode("utf-8")).hexdigest() )
sha384のハッシュ値: 92f7818b31b9936b90a5178e811979ef3ba68a14b57e8362424d54446f31ad2a249e4306628ad33ccb28b3e9dc5e043e
>>> print("sha1のハッシュ値:", hashlib.sha1(PW.encode("utf-8")).hexdigest() )
sha1のハッシュ値: 250e77f12a5ab6972a0895d290c4792f0a326ea8
>>> print("sha224のハッシュ値:", hashlib.sha224(PW.encode("utf-8")).hexdigest() )
sha224のハッシュ値: 8f5901a4a0a2d72ff9882e63c08d4c32b3eaa3683b6e5bfc0ca03e86
>>> print("sha256のハッシュ値:", hashlib.sha256(PW.encode("utf-8")).hexdigest() )
sha256のハッシュ値: b493d48364afe44d11c0165cf470a4164d1e2609911ef998be868d46ade3de4e
>>> print("sha512のハッシュ値:", hashlib.sha512(PW.encode("utf-8")).hexdigest() )

こんな感じでRやPython等でも簡単に出力することが出来ます。