- 締切済み
SHA-1のプログラムについて
SHA1には初期値が5つあり、バイト列とその初期値で5つの値を出して、それを繋げた物が解になるみたいなのですが、その初期値を変更した方が良いという理由が分かりません。 誰か教えてください!
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- jjk65536
- ベストアンサー率59% (66/111)
初期値を変更したほうがよいというのは、どこの情報でしょうか? ちょっと調べたんですがわかりませんでした。 ちなみにRFCでは以下の値を使うように明記されており、変更したほうが良いとは 書かれていませんでした。 http://www.ipa.go.jp/security/rfc/RFC3174JA.html http://www.ietf.org/rfc/rfc3174.txt より引用 H0 = 67452301 H1 = EFCDAB89 H2 = 98BADCFE H3 = 10325476 H4 = C3D2E1F0. というか、変更するとダイジェストが変わってしまいませんか? それはsha-1ダイジェストと呼べるのだろうか。。。 私自身はSHA-1の専門家ではないため、見当違いなことを言っていたら お詫びいたします。 - ここからはご参考まで - 知人(以下Aさん)で過去にMD5について、初期ベクタの値を意図的に変更している人がいました。 メリットとして、元の文字が簡単なものでもそれのMD5(もどき)ダイジェストと ばれないことですかね。 一例として、あるサイトではユーザyamadaさんに初期パスワードとしてmd5("yamada")の 先頭8文字53fec4cdを設定するものとします(*1)。 これでは勘の良い人にはばれてしまいますよね? ところが、AさんのコンパイルしたMD5では、md5_a("yamada")の先頭8文字が608b2c76を示します。 "yamada"から608b2c76が導けるのはAさんのMD5(もどき)だけなので、たぶんばれません。 そういった使い方をSha-1でもやることはできると思います。 しかし、その場合のセキュリティリスクの程度がどのていどであるのか 正確に把握することは逆に困難になりますし、あまりいい方法だとは 言えないと思います。たぶんSaltの方がいいです。 危険ですので真似しないで下さい。 何かの参考になれば幸いです。 (*1) $ echo -n yamada | md5sum 53fec4cda201806226c4852e4678eaa0 -