SHA1とは? わかりやすく解説

556の専門辞書や国語辞典百科事典から一度に検索! Weblio 辞書 ヘルプ

sha1

(PHP 4 >= 4.3.0, PHP 5)
sha1 — 文字列の sha1 ハッシュを計算する

説明

string sha1 ( string str [, bool raw_output] )
» US Secure Hash Algorithm 1 を使用して str の sha1 ハッシュを計算し、 そのハッシュ値を返します。ハッシュは 40 文字の 16 進数です。 オプションの raw_outputTRUE が 指定された場合、sha1 ダイジェストは 20 バイト長のバイナリ形式で 返されます。
注意: オプションの raw_output パラメータは PHP 5.0.0 で追加され、デフォルトは FALSE です。
例 2284. sha1() の例
<?php
$str = 'apple';
                    
if (sha1($str) === 'd0be2dc421be4fcd0172e5afceea3970e2f3d940') {
   echo "Would you like a green or red apple?";
   exit;
}
?>


sha1_file()crc32() および md5() も参照ください。

SHA1 クラス

入力データSHA1 ハッシュ計算します

名前空間: System.Security.Cryptography
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<ComVisibleAttribute(True)> _
Public MustInherit Class
 SHA1
    Inherits HashAlgorithm
[ComVisibleAttribute(true)] 
public abstract class SHA1 : HashAlgorithm
[ComVisibleAttribute(true)] 
public ref class SHA1 abstract : public
 HashAlgorithm
/** @attribute ComVisibleAttribute(true) */ 
public abstract class SHA1 extends HashAlgorithm
ComVisibleAttribute(true) 
public abstract class SHA1 extends
 HashAlgorithm
解説解説
使用例使用例

dataSHA1 ハッシュ計算しresult格納する例を次に示します。この例では、定義済み定数 DATA_SIZE があることを前提にしています。

Dim data(DATA_SIZE) As Byte
Dim result() As Byte
       
Dim sha As New SHA1CryptoServiceProvider()
' This is one implementation of the abstract class SHA1.
result = sha.ComputeHash(data)
byte[] data = new byte[DATA_SIZE];
byte[] result; 
 
SHA1 sha = new SHA1CryptoServiceProvider(); 
// This is one implementation of the abstract class SHA1.
result = sha.ComputeHash(data);
array<Byte>^ data = gcnew array<Byte>( DATA_SIZE );
array<Byte>^ result;

SHA1^ sha = gcnew SHA1CryptoServiceProvider;
// This is one implementation of the abstract class SHA1.
result = sha->ComputeHash( data );
ubyte data[] = new ubyte[data_Size];
ubyte result[];
SHA1 sha = new SHA1CryptoServiceProvider();

// This is one implementation of the abstract class SHA1.
result = sha.ComputeHash(data);
継承階層継承階層
System.Object
   System.Security.Cryptography.HashAlgorithm
    System.Security.Cryptography.SHA1
       System.Security.Cryptography.SHA1CryptoServiceProvider
       System.Security.Cryptography.SHA1Managed
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

SHA1 コンストラクタ


SHA1 フィールド


プロテクト フィールドプロテクト フィールド

  名前 説明
プロテクト フィールド HashSizeValue  計算されハッシュ コードサイズビット単位表します。 ( HashAlgorithm から継承されます。)
プロテクト フィールド HashValue  計算されハッシュ コードの値を表します。 ( HashAlgorithm から継承されます。)
プロテクト フィールド State  ハッシュ計算の状態を表します。 ( HashAlgorithm から継承されます。)
参照参照

関連項目

SHA1 クラス
System.Security.Cryptography 名前空間

その他の技術情報

暗号サービス

SHA1 プロパティ


パブリック プロパティパブリック プロパティ

  名前 説明
パブリック プロパティ CanReuseTransform  現在の変換再利用できるかどうかを示す値を取得します。 ( HashAlgorithm から継承されます。)
パブリック プロパティ CanTransformMultipleBlocks  派生クラスオーバーライドされると、複数ブロック変換できるかどうかを示す値を取得します。 ( HashAlgorithm から継承されます。)
パブリック プロパティ Hash  計算されハッシュ コードの値を取得します。 ( HashAlgorithm から継承されます。)
パブリック プロパティ HashSize  計算されハッシュ コードサイズビット単位取得します。 ( HashAlgorithm から継承されます。)
パブリック プロパティ InputBlockSize  派生クラスオーバーライドされると、入力ブロック サイズ取得します。 ( HashAlgorithm から継承されます。)
パブリック プロパティ OutputBlockSize  派生クラスオーバーライドされると、出力ブロック サイズ取得します。 ( HashAlgorithm から継承されます。)
参照参照

関連項目

SHA1 クラス
System.Security.Cryptography 名前空間

その他の技術情報

暗号サービス

SHA1 メソッド


パブリック メソッドパブリック メソッド

( プロテクト メソッド参照)
  名前 説明
パブリック メソッド Clear  HashAlgorithm クラスによって使用されているすべてのリソース解放します。 ( HashAlgorithm から継承されます。)
パブリック メソッド ComputeHash  オーバーロードされます入力データハッシュ値計算します。 ( HashAlgorithm から継承されます。)
パブリック メソッド Create オーバーロードされます。 この抽象クラス特定の実装インスタンス化できるようにします。
パブリック メソッド Equals  オーバーロードされます2 つObject インスタンス等しかどうか判断します。 ( Object から継承されます。)
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用適してます。 ( Object から継承されます。)
パブリック メソッド GetType  現在のインスタンスType取得します。 ( Object から継承されます。)
パブリック メソッド Initialize  HashAlgorithm クラス実装初期化します。 ( HashAlgorithm から継承されます。)
パブリック メソッド ReferenceEquals  指定した複数Object インスタンス同一かどうか判断します。 ( Object から継承されます。)
パブリック メソッド ToString  現在の Object を表す String返します。 ( Object から継承されます。)
パブリック メソッド TransformBlock  入力バイト配列指定した領域ハッシュ値計算し結果ハッシュ値出力バイト配列指定した領域コピーします。 ( HashAlgorithm から継承されます。)
パブリック メソッド TransformFinalBlock  指定したバイト配列指定した領域ハッシュ値計算します。 ( HashAlgorithm から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

SHA1 クラス
System.Security.Cryptography 名前空間

その他の技術情報

暗号サービス

SHA1 メンバ

入力データの SHA1 ハッシュ計算します

SHA1 データ型公開されるメンバを以下の表に示します


プロテクト コンストラクタプロテクト コンストラクタ
プロテクト フィールドプロテクト フィールド
  名前 説明
プロテクト フィールド HashSizeValue  計算されハッシュ コードサイズビット単位表します。(HashAlgorithm から継承されます。)
プロテクト フィールド HashValue  計算されハッシュ コードの値を表します。(HashAlgorithm から継承されます。)
プロテクト フィールド State  ハッシュ計算の状態を表します。(HashAlgorithm から継承されます。)
パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ CanReuseTransform  現在の変換再利用できるかどうかを示す値を取得します。(HashAlgorithm から継承されます。)
パブリック プロパティ CanTransformMultipleBlocks  派生クラスオーバーライドされると、複数ブロック変換できるかどうかを示す値を取得します。(HashAlgorithm から継承されます。)
パブリック プロパティ Hash  計算されハッシュ コードの値を取得します。(HashAlgorithm から継承されます。)
パブリック プロパティ HashSize  計算されハッシュ コードサイズビット単位取得します。(HashAlgorithm から継承されます。)
パブリック プロパティ InputBlockSize  派生クラスオーバーライドされると、入力ブロック サイズ取得します。(HashAlgorithm から継承されます。)
パブリック プロパティ OutputBlockSize  派生クラスオーバーライドされると、出力ブロック サイズ取得します。(HashAlgorithm から継承されます。)
パブリック メソッドパブリック メソッド
( プロテクト メソッド参照)
  名前 説明
パブリック メソッド Clear  HashAlgorithm クラスによって使用されているすべてのリソース解放します。 (HashAlgorithm から継承されます。)
パブリック メソッド ComputeHash  オーバーロードされます入力データハッシュ値計算します。 (HashAlgorithm から継承されます。)
パブリック メソッド Create オーバーロードされます。 この抽象クラス特定の実装インスタンス化できるようにします。
パブリック メソッド Equals  オーバーロードされます2 つObject インスタンス等しかどうか判断します。 (Object から継承されます。)
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用適してます。 (Object から継承されます。)
パブリック メソッド GetType  現在のインスタンスType取得します。 (Object から継承されます。)
パブリック メソッド Initialize  HashAlgorithm クラス実装初期化します。 (HashAlgorithm から継承されます。)
パブリック メソッド ReferenceEquals  指定した複数Object インスタンス同一かどうか判断します。 (Object から継承されます。)
パブリック メソッド ToString  現在の Object を表す String返します。 (Object から継承されます。)
パブリック メソッド TransformBlock  入力バイト配列指定した領域ハッシュ値計算し結果ハッシュ値出力バイト配列指定した領域コピーします。 (HashAlgorithm から継承されます。)
パブリック メソッド TransformFinalBlock  指定したバイト配列指定した領域ハッシュ値計算します。 (HashAlgorithm から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

SHA1 クラス
System.Security.Cryptography 名前空間

その他の技術情報

暗号サービス

SHA-1

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/08/13 14:46 UTC 版)

SHA-1
一般
設計者 アメリカ国家安全保障局
初版発行日 1993 (SHA-0),
1995 (SHA-1)
シリーズ (SHA-0), SHA-1, SHA-2, SHA-3
認証 FIPS PUB 180-4, CRYPTREC(運用監視)
詳細
ダイジェスト長 160 bits
構造 Merkle-Damgård construction
ラウンド数 80
最良の暗号解読
2011年にMarc Stevensによって261回の試行で理論上、強衝突耐性を突破[1][2]

SHA-1(シャーワン[3][4])は、Secure Hash Algorithmシリーズの暗号学的ハッシュ関数で、SHAの最初のバージョンであるSHA-0の弱点を修正したものである。National Security Agency(NSA)によって設計され、National Institute of Standards and Technology(NIST)によってFederal Information Processing Standard(FIPS) PUB 180-4として標準化されている。NISTは2030年12月31日に仕様を廃止予定[5]

概要

SHAシリーズ全体の俯瞰についてはSecure Hash Algorithmの記事を参照のこと。

SHA-1は、160ビット(20バイト)のハッシュ値を生成する。SHA-1はSHA-0にきわめて類似しており、SHA-0において脆弱性の原因となっていた仕様のエラーを修正したものがSHA-1であるため、SHA-0は基本的に全く用いられない。

廃止

以前は、SHA-1はSHAシリーズの中で最も広く用いられていたものであり、多くのアプリケーションやプロトコルに採用されていたが、2017年2月には衝突攻撃(強衝突耐性の突破)の成功が現実に示されている。そのため、下記の通りセキュリティの懸念から利用が控えられつつある状況にある。

2005年、SHA-1に対する攻撃法が発見され、将来的な利用に十分な安全性を有していないことが示唆された[6]。NISTは、合衆国の政府組織に対して、2010年までにSHA-1からSHA-2へ移行するよう要請した[7]。SHA-2に対する有効な攻撃法はいまだ報告されていないが、その構造はSHA-1に類似したものである。2012年、公募を経て、KeccakがSHA-3として選定された[7]。2013年11月にはマイクロソフトが、2017年までにMicrosoft WindowsTLS/SSLにおいてSHA-1を利用した証明書を受け入れないようにすることを表明した[8]。2014年9月にはGoogleも2017年までにGoogle ChromeにおいてSHA-1による証明書を受け入れないようにすることを表明した[9]Mozillaでも同様に2017年までにSHA-1による証明書を受け入れないようにすることを検討している[10][11][12]

日本においても、CRYPTRECが2003年の初版では推奨リストに掲載されていたSHA-1を2013年の改訂において互換性維持のための利用に限定した運用監視リストに移行し[13]総務省および法務省では、政府認証基盤および電子認証登記所(商業登記認証局)においてSHA-1を用いた電子証明書の検証を2015年度まで(特別の事情がある場合は2019年度まで)に終了することとしている[14]。 これらを受けて、SHA-1を使っているウェブサイトはSHA-2への移行が予定されており、SHA-2に対応できないソフトや機器によるアクセスは不能になる[15]。特に2009年以前の携帯電話機は一部を除き内蔵ソフト更新が行われないため、ハードウェアの買い替えを余儀なくされる[16][17][18]

NISTは2030年12月31日に仕様を廃止する予定で、それ以降は米国政府はSHA-1を使用している商品を購入しない予定[5]

SHA-1 ハッシュ関数

SHA-1 圧縮関数の1回分の繰り返し
A, B, C, D, E:32ビットの状態ワード
F:非線形関数
n nだけ左ローテート
n:操作ごとに変化
Wt:ラウンドtにおける拡張メッセージワード
Kt:ラウンドtにおける定数
:addition modulo 232

SHA-1は、マサチューセッツ工科大学ロナルド・リベストMD4MD5の設計で用いたものと同様の原理に基づいているが、より保守的な設計となっている。

オリジナルの仕様は、1993年にNISTによってFIPS 180 "Secure Hash Standard" として発表された。このバージョンは現在ではしばしば SHA-0 と呼ばれる。このバージョンは発表からしばらくしてNSAによって撤回され、1995年に改訂版がFIPS PUB 180-1として発表された。これがSHA-1と呼ばれるものであり、SHA-0とは圧縮関数におけるビット演算のローテートが1つ異なるのみである。NSAによれば、これによってSHA-0においてセキュリティを低下させていたフローが修正されたとしているが、NSAはそれ以上の説明や証拠の提示を行わなかった。その後も、SHA-0、SHA-1の双方についてセキュリティ脆弱性の報告がなされている。

用途

暗号

SHA-1は暗号に関する多くのアプリケーションやプロトコルに用いられている。例としては、TLS/SSLOpenPGPSSHS/MIMEIPsecなどが挙げられる。これらではMD5もよく用いられる(SHA-1とMD5はともにMD4の後継である)。

SHA-1とSHA-2は、アメリカ合衆国において機密情報を扱う際に法律によって要求されるハッシュアルゴリズムの一つである。FIPS 180-1では、SHA-1を私的にあるいは商業で用いることも推奨している。SHA-1は合衆国政府での利用はほぼ終了しており、NISTでは「連邦組織は、電子署名タイムスタンプ、衝突への耐性を必要とするアプリケーションでのSHA-1の利用を可及的速やかに中止すべきである。2010年以降はSHA-2を利用すべきである」としている[19]

SHA制定の重要な動機はDigital Signature Standardであった。DSAの仕様には、SHA-1を利用する過程が含まれている。

SHAハッシュ関数はブロック暗号であるSHACALの基礎となっている。

データ完全性

SHA-1ハッシュはGitMercurial、Monotoneといった分散型バージョン管理システムにおいても、バージョンの管理やデータの破損、改竄の検出に用いられている。任天堂Wiiにおいては、起動時にSHA-1による署名を検証しているが、これを回避する手法も開発されている[20]

攻撃と認証

ハッシュ長が L ビットであるハッシュ関数において、与えられた特定のハッシュに対応する元のメッセージを見つけることは、総当たり攻撃では 2L の試行で可能である。これは原像攻撃と呼ばれる。一方、同じハッシュを与える2つの異なるメッセージを見つけることは衝突攻撃と呼ばれ、およそ 1.2 * 2L / 2 の試行で可能である。後者の理由により、ハッシュ関数の強度はハッシュ長の半分の鍵長の共通鍵暗号と比較される。これより、SHA-1の強度は80ビットであると考えられてきた。

暗号研究者によって、SHA-0については衝突ペアが発見され、SHA-1についても当初想定されていた 280 の試行よりもずっと少ない試行で衝突を発生させうる手法が発見された。

そのブロック構造、繰り返し構造と、追加的な最終ステップの欠如により、SHAシリーズは伸長攻撃およびpartial-message collision attacksに対して脆弱である[21]。これらの攻撃法により、 カテゴリ:ハッシュ関数メッセージ認証コード認証付き暗号

カテゴリ

SHA-1

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/02/11 03:54 UTC 版)

Secure Hash Algorithm」の記事における「SHA-1」の解説

詳細は「SHA-1」を参照 SHA-0欠点修正した。SHA-1のハッシュ値長さは、SHA-0同じく160ビット2017年に、衝突攻撃成功実例報告された。

※この「SHA-1」の解説は、「Secure Hash Algorithm」の解説の一部です。
「SHA-1」を含む「Secure Hash Algorithm」の記事については、「Secure Hash Algorithm」の概要を参照ください。

ウィキペディア小見出し辞書の「SHA1」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「SHA1」の関連用語

1
94% |||||

2
94% |||||

3
94% |||||








SHA1のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



SHA1のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2025 by the PHP Documentation Group.
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのSHA-1 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのSecure Hash Algorithm (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS     

iiq_pixel