Python/Ruby/JavaでSHA-1

SHA-1とは

認証やデジタル署名などに使われるハッシュ関数(要約関数)のひとつ。2の64乗ビット以下の原文から160ビットの「ハッシュ値」を生成し、通信経路の両端で比較することで、通信途中で原文が改ざんされていないかを検出することができる。計算方法には初期値敏感性の不可逆な一方向関数を含むため、ハッシュ値は擬似的な乱数のような値をとり、これをもとに原文を再現することはできない。また、同じハッシュ値を生成する別のメッセージを作成することも極めて困難である。1995年に米国標準技術局(NIST)によってアメリカ政府の標準ハッシュ関数として採用された。インターネット上で安全に通信を行うためのIPsecなどに応用されている。
http://e-words.jp/w/SHA-1.html


gitのリビジョン番号にも使われています


python

import hashlib

text="任意の文字列"

print hashlib.sha1(text).hexdigest()


ruby

require 'digest/sha1'

text = "任意の文字列"

print Digest::SHA1.hexdigest(text)


java

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Sample {

    public static void main(String args[])  {
        String text = "任意の文字列";

        try {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(text.getBytes());
            byte digest[] = md.digest();

            String hash = "";

            for (byte aDigest : digest) {
                String hex = Integer.toHexString(aDigest);
                if (hex.length() == 1){
                    hex = "0" + hex;
                }
                hex = hex.substring(hex.length() - 2);
                hash += hex;
            }
            System.out.println(hash);

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

    }
}