2010-04-02
■ [雑談]HMAC-SHA1
OAuthやxAuthなどで使うHMAC-SHA1について、一部で要望があるようなので書いてみた。
一応NYSL書いてますが、ようは自由に使ってもらって結構&使って何があっても知らんよ、と言うことなのであんまり気にしないで下さい。
12:18追記:鍵が規定より長かったときの処理がおかしかったので修正。
※http://www.ipa.go.jp/security/rfc/RFC2104JA.htmlを参考に作成
/*
NYSL Version 0.9982
A. 本ソフトウェアは Everyone'sWare です。このソフトを手にした一人一人が、
ご自分の作ったものを扱うのと同じように、自由に利用することが出来ます。
A-1. フリーウェアです。作者からは使用料等を要求しません。
A-2. 有料無料や媒体の如何を問わず、自由に転載・再配布できます。
A-3. いかなる種類の 改変・他プログラムでの利用 を行っても構いません。
A-4. 変更したものや部分的に使用したものは、あなたのものになります。
公開する場合は、あなたの名前の下で行って下さい。
B. このソフトを利用することによって生じた損害等について、作者は
責任を負わないものとします。各自の責任においてご利用下さい。
C. 著作者人格権は しらたま/whiteball に帰属します。著作権は放棄します。
D. 以上の3項は、ソース・実行バイナリの双方に適用されます。
しらたま
http://whiteball.m7.coreserver.jp/
white_ball_11/hotmail.com
#*/
!B=64
!L=20
●HMACSHA1取得(秘密鍵で内容の)
#秘密鍵の長さの調整
秘密鍵のバイト数
秘密鍵からSHA1取得
2で行揃え
INT(「$」&対象)を秘密鍵の回数に「byte」でバイナリ設定#ハッシュ関数の出力のバイナリ変換
秘密鍵は秘密鍵のL バイト左部分
秘密鍵のバイト数
「{\0}」を(B-それ)だけリフレイン
秘密鍵は秘密鍵&それ
#鍵から作る2つの文字列の準備
文字とは整数
B/4回
文字はそれ
XOR(文字,$36363636)を鍵Iの(回数-1)*4+1に「DWORD」でバイナリ設定
XOR(文字,$5C5C5C5C)を鍵Oの(回数-1)*4+1に「DWORD」でバイナリ設定
経過とは文字列
経過にLを確保
2で行揃え
INT(「$」&対象)を経過の回数に「byte」でバイナリ設定#ハッシュ関数の出力のバイナリ変換
2で行揃え
INT(「$」&対象)を経過の回数に「byte」でバイナリ設定#ハッシュ関数の出力のバイナリ変換
経過を戻す
#出力確認
鍵とは文字列
#適当に鍵生成
鍵にBを確保
B 回
鍵で「こんにちは」のHMACSHA1取得
Evi
2012/03/26 14:52
That saves me. Thanks for being so sesnbile!
- 124 http://nadesiko.g.hatena.ne.jp/
- 95 http://www.google.co.jp/search?q=pixiv+viewer&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a
- 52 http://www.google.co.jp/custom?hl=ja&inlang=ja&client=pub-4438296558807254&channel=2936103059&cof=FORID:1;GL:1;S:http://nadesiko.g.hatena.ne.jp/;L:http://nadesiko.g.hatena.ne.jp/images/group/nadesiko/nadesikopk.gif;LBGC:#E98383;DIV:#F3BABA;LH:40;&domains=nadesiko.g.hatena.ne.jp&ie=UTF-8&oe=UTF-8&q=ファイルストリーム開く&btnG=検索&sitesearch=nadesiko.g.hatena.ne.jp
- 39 http://d.hatena.ne.jp/tt_clown/20100202/1265096776
- 28 http://www.google.co.jp/search?q=pixiv+ビューア&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a
- 25 http://www.google.co.jp/custom?hl=ja&inlang=ja&client=pub-4438296558807254&channel=2936103059&cof=FORID:1;GL:1;S:http://nadesiko.g.hatena.ne.jp/;L:http://nadesiko.g.hatena.ne.jp/images/group/nadesiko/nadesikopk.gif;LBGC:#E98383;DIV:#F3BABA;LH:40;&domains=nadesiko.g.hatena.ne.jp&ie=UTF-8&oe=UTF-8&q=ファイルストリーム一行読む&btnG=検索&sitesearch=nadesiko.g.hatena.ne.jp
- 21 http://www.google.co.jp/custom?hl=ja&inlang=ja&client=pub-4438296558807254&channel=2936103059&cof=FORID:1;GL:1;S:http://nadesiko.g.hatena.ne.jp/;L:http://nadesiko.g.hatena.ne.jp/images/group/nadesiko/nadesikopk.gif;LBGC:#E98383;DIV:#F3BABA;LH:40;&domains=nadesiko.g.hatena.ne.jp&ie=UTF-8&oe=UTF-8&q=毎行読む&btnG=検索&sitesearch=nadesiko.g.hatena.ne.jp
- 19 http://d.hatena.ne.jp/gifnksm/20100202/1265105961
- 18 http://www.google.co.jp/custom?hl=ja&inlang=ja&client=pub-4438296558807254&channel=2936103059&cof=FORID:1;GL:1;S:http://nadesiko.g.hatena.ne.jp/;L:http://nadesiko.g.hatena.ne.jp/images/group/nadesiko/nadesikopk.gif;LBGC:#E98383;DIV:#F3BABA;LH:40;&domains=nadesiko.g.hatena.ne.jp&ie=UTF-8&oe=UTF-8&q=配列取り出す&btnG=検索&sitesearch=nadesiko.g.hatena.ne.jp
- 14 http://www.google.co.jp/search?q=pixiv+viewer&ie=utf-8&oe=utf-8&aq=t&rls=Palemoon:ja-JP:unofficial&client=firefox