とあるエンジニアの闇歴史帳

コピペで使える便利Wiki ※現在構築中です。

ユーザ用ツール


perl:sha1_get

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

perl:sha1_get [2017/12/14 20:18]
perl:sha1_get [2020/06/23 14:10] (現在)
行 1: 行 1:
 +====== SHA1の値を取得する - Perl ======
 +~~socialite~~
 +<note important>この記事は2007年05月17日に書かれた物です</note>
 +
 +[[http://ja.wikipedia.org/wiki/SHA|MD5などよりも安全性の高いと言われるSHA1]]の値を取得したい。**Digest::SHA1**モジュールを用いればあっという間に実現できる。 
 +
 +[[http://search.cpan.org/~gaas/Digest-SHA1-2.13/SHA1.pm|Digest::SHA1]]モジュールには三種類の関数(メソッド)が用意されており、用途によって使い分けることができる。
 +
 +===== サンプル =====
 +<code perl>
 +;#
 +;#SHA1の値を取得する
 +;#
 +
 +use strict;
 +use Digest::SHA1 qw(sha1 sha1_hex sha1_base64);
 +
 +#-- 文字列設定 --#
 +my $str = 'sushi geisha tenpura'; 
 +
 +#-- SHA1関数を実行 --#
 +print sha1($str),        "\n";
 +
 +print sha1_hex($str),    "\n";
 +print sha1_base64($str), "\n";
 +</code>
 +
 +
 +===== 実行結果 =====
 +<code>
 +O??悖桿4+¥@奧J褓
 +864fa659a49bd823db65342b975c40d4fc4aea70
 +hk+mWaSb2CPbZTQrl1xA1PxK6nA
 +</code>
 +
 +それぞれの関数は実行結果からも分かる通り、次のような処理を行う。
 +  - sha1バイナリの値で返却(20byte)
 +  - sha1_hex16進数へ変換後に返却(40byte)
 +  - sha1_base64BASE64にエンコードし返却(27byte)
 +
 +渡す値はもちろん何でもかまわない。バイナリや日本語なども当然通る。もし返ってきた値をファイル名などに使用したいなら、BASE64は '/' が含まれるためsha1_hexを用いることになる。なおバイト数は固定長のため変更することは出来ない。
 +
 +これも考えれば当然のことであるが、三種類の値は表現方法が違うだけで全て同じである。疑問ならバイナリ値(sha1)を、自分で16進数へ変換してみれば分かるだろう。
 +
 +ここには書かないがオブジェクト指向型のインターフェースも用意されており、そちらを用いるとファイルから直接SHA1値が取得できる。ドキュメントなどを参照されたし。
 +
 +
 +
 +実用上はあまり問題ないと思われるが、SHA1はすでにハックされたという報告があるため、SHA2への移行を進められている。
 +
 +**第1回 すべてはここから始まった〜SHA-1の脆弱化**
 +[[http://www.atmarkit.co.jp/fsecurity/rensai/crypt01/crypt01.html]]
 +> 2005年2月15日、世界的な暗号の権威であるBruce Schneier氏のBlog「Schneier on Security」で公表された「SHA-1 Broken」という情報は、驚きをもって世界中を駆け回った。現在、ハッシュ関数のデファクトスタンダードとして最も広く利用されているSHA-1に対して、中国・山東大学のXiaoyun Wang氏とHongbo Yu氏、セキュリティコンサルタントのYiqun Lisa Yin氏のチームが攻撃に成功したらしいというものであった。
 +
 +===== 関連書籍 =====
 +{{amazon>jp:4797336803}}
 +<html><p style="clear:both"></p></html>
 +
 +{{amazon>jp:4798139815}}
 +<html><p style="clear:both"></p></html>
 +
 +{{amazon>jp:B00O8GIL62}}
 +<html><p style="clear:both"></p></html>
 +
 +{{tag>CGI・Perl例文集 Perl ハッシュ値 SHA1}}
 +~~socialite~~
  

関連ページ