Google Closureライブラリ: SHA-1ダイジェスト (goog.crypt.Sha1)

JavaScript のライブラリを使って、SHA-1 ダイジェスト(入力:ASCII 文字列、出力:16進数の文字列)を計算する方法。

まずは、@herumi さんの CybozuLabs.SHA1 ライブラリ を使った場合:
<script src="sha1.js"></script>
<script><!--
  window.onload = function() {
    var string = (new Date()).getTime();
    var hash = CybozuLabs.SHA1.calc(string);
    alert('SHA1: ' + hash);
  };
//--></script>

次に、Google Closure ライブラリ を使った場合:
<script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.js"></script>
<script><!--
  goog.require('goog.crypt');
  goog.require('goog.crypt.Sha1');

  function googCryptSha1(string) {
    var sha1 = new goog.crypt.Sha1();
    var ibytes = goog.crypt.stringToByteArray(string);
    sha1.update(ibytes);
    var obytes = sha1.digest();
    var hash = bytesToHex(obytes);
    return hash;
  };

  function bytesToHex(bytes) {
    var hexchars = '0123456789abcdef';
    var hexrep = new Array(bytes.length * 2);
    for ( var i = 0; i < bytes.length; ++i) {
      hexrep[i * 2] = hexchars.charAt((bytes[i] >> 4) & 15);
      hexrep[i * 2 + 1] = hexchars.charAt(bytes[i] & 15);
    }
    return hexrep.join('');
  };

  window.onload = function() {
    var string = (new Date()).getTime();
    var hash = googCryptSha1(string);
    alert('SHA1: ' + hash);
  };
//--></script>

goog.crypt.Sha1 は、入出力ともに ByteArray 配列となるため、
今回のように、入力:文字列、出力:16進数で取り出す場合には、
明らかに CybozuLabs.SHA1 の方がシンプルで済む。

要は、Google Closure Library を試しに使ってみたかったということ。
JavaScript のソースコードを事前にコンパイル・パックしなくても、
上記のように Google Code のレポジトリ上から直接、ライブラリの
ファイルを直接ダウンロードして使うこともできる。
AJAX Libraries API に入っていないのは、何でだろう?
 

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 4

なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー)
面白い

この記事へのコメント

この記事へのトラックバック