0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ハッシュ値生成の色々な方法 コマンド編

Last updated at Posted at 2022-06-03

ハッシュ値生成の色々な方法 コマンド編

Windows

CertUtil

Windowsの標準コマンドでは、CertUtil コマンドで ファイルのハッシュ値を生成することが出来ます。使い方は、以下の通りです。

CertUtil -hashfile 対象ファイル名 ハッシュアルゴリズム

コマンドのヘルプで確認すると、以下の様に出力されました。

> CertUtil -hashfile -?
使用法:
  CertUtil [オプション] -hashfile InFile [HashAlgorithm]
  ファイルに暗号化ハッシュを生成し表示します

オプション:
  -Unicode          -- リダイレクトされた出力を Unicode として書き込む
  -gmt              -- 時刻を GMT で表示します
  -seconds          -- 時間を秒とミリ秒で表示します
  -v                -- メッセージを詳細に表示します
  -privatekey       -- パスワードと秘密キーのデータを表示します
  -pin PIN                  -- スマート カードの PIN
  -sid WELL_KNOWN_SID_TYPE  -- 数値 SID
            22 -- ローカル システム
            23 -- ローカル サービス
            24 -- ネットワーク サービス

ハッシュ アルゴリズム: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512

CertUtil -?              -- 動詞の一覧 (コマンドの一覧) を表示します
CertUtil -hashfile -?    -- "hashfile" 動詞のヘルプ テキストを表示します
CertUtil -v -?           -- すべての動詞のヘルプ テキストをすべて表示します

SHA1のハッシュ値を生成しました。

> CertUtil -hashfile HelloWorld.txt sha1
SHA1 ハッシュ (対象 HelloWorld.txt):
0a4d55a8d778e5022fab701977c5d840bbc486d0
CertUtil: -hashfile コマンドは正常に完了しました。

SHA256のハッシュ値を生成しました。

> CertUtil -hashfile HelloWorld.txt sha256
SHA256 ハッシュ (対象 HelloWorld.txt):
a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
CertUtil: -hashfile コマンドは正常に完了しました。

SHA512のハッシュ値を生成しました。

> CertUtil -hashfile HelloWorld.txt sha512
SHA512 ハッシュ (対象 HelloWorld.txt):
2c74fd17edafd80e8447b0d46741ee243b7eb74dd2149a0ab1b9246fb30382f27e853d8585719e0e67cbda0daa8f51671064615d645ae27acb15bfb1447f459b
CertUtil: -hashfile コマンドは正常に完了しました。

Windows版 OpenSSL

Windows版のOpenSSLのコマンド を使って、ハッシュ値を生成します。

ハッシュ値を取得するときのコマンドは、以下の通りです。

> openssl ハッシュタイプ 対象ファイル名

コマンドのヘルプで確認すると、以下の様に出力されました。

> openssl dgst --help
Usage: dgst [options] [file...]

General options:
 -help               Display this summary
 -list               List digests
 -engine val         Use engine e, possibly a hardware device
 -engine_impl        Also use engine given by -engine for digest operations
 -passin val         Input file pass phrase source

Output options:
 -c                  Print the digest with separating colons
 -r                  Print the digest in coreutils format
 -out outfile        Output to filename rather than stdout
 -keyform format     Key file format (ENGINE, other values ignored)
 -hex                Print as hex dump
 -binary             Print in binary form
 -xoflen +int        Output length for XOF algorithms
 -d                  Print debug info
 -debug              Print debug info

Signing options:
 -sign val           Sign digest using private key
 -verify val         Verify a signature using public key
 -prverify val       Verify a signature using private key
 -sigopt val         Signature parameter in n:v form
 -signature infile   File with signature to verify
 -hmac val           Create hashed MAC with key
 -mac val            Create MAC (not necessarily HMAC)
 -macopt val         MAC algorithm parameters in n:v form or key
 -*                  Any supported digest
 -fips-fingerprint   Compute HMAC with the key used in OpenSSL-FIPS fingerprint

Random state options:
 -rand val           Load the given file(s) into the random number generator
 -writerand outfile  Write random data to the specified file

Provider options:
 -provider-path val  Provider load path (must be before 'provider' argument if required)
 -provider val       Provider to load (can be specified multiple times)
 -propquery val      Property query used when fetching algorithms

Parameters:
 file                Files to digest (optional; default is stdin)

SHA1のハッシュ値を生成しました。

> openssl sha1 HelloWorld.txt
SHA1(HelloWorld.txt)= 0a4d55a8d778e5022fab701977c5d840bbc486d0

OpenSSLの場合、入力を標準入力からも行えます。

> type HellowWorld.txt | openssl sha1
SHA1(stdin)= 0a4d55a8d778e5022fab701977c5d840bbc486d0
> type HelloWorld.txt | openssl sha256
SHA256(stdin)= a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
> type HellowWorld.txt | openssl sha512
SHA512(stdin)= 2c74fd17edafd80e8447b0d46741ee243b7eb74dd2149a0ab1b9246fb30382f27e853d8585719e0e67cbda0daa8f51671064615d645ae27acb15bfb1447f459b

Windows版 LibreSSL

LibreSSLは、コマンドが OpenSSLと同じで opensslです。

> "C:\Program Files (x86)\LibreSSL\bin\openssl.exe" sha1 HelloWorld.txt
SHA1(HelloWorld.txt)= 0a4d55a8d778e5022fab701977c5d840bbc486d0
> type HelloWorld.txt | "C:\Program Files (x86)\LibreSSL\bin\openssl.exe" sha1
(stdin)= 0a4d55a8d778e5022fab701977c5d840bbc486d0
> type HelloWorld.txt | "C:\Program Files (x86)\LibreSSL\bin\openssl.exe" sha256
(stdin)= a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
> type HelloWorld.txt | "C:\Program Files (x86)\LibreSSL\bin\openssl.exe" sha512
(stdin)= 2c74fd17edafd80e8447b0d46741ee243b7eb74dd2149a0ab1b9246fb30382f27e853d8585719e0e67cbda0daa8f51671064615d645ae27acb15bfb1447f459b

Linux Ubuntu

Linux系はOpensslを使用してハッシュ値を作成するか、GNU Core Utilitiesに含まれているsha1sum, sha256sumを使用してハッシュ値を作成します。
OpenSSLのコマンドの指定方法は、Windows系のOpenSSLのコマンドの指定方法と同じです。

sha1sum, sha256sum, sha512sum

sha1sum コマンドの指定方法は、以下のとおりです。

$ sha1sum 対象ファイル名

sha1sumの実施例

$ sha1sum HelloWorld.txt 
0a4d55a8d778e5022fab701977c5d840bbc486d0  HelloWorld.txt

入力が標準入力でも行えます。

$ echo -n "Hello World" | sha1sum
0a4d55a8d778e5022fab701977c5d840bbc486d0 

sah1sumのヘルプ

$ sha1sum --help
Usage: sha1sum [OPTION]... [FILE]...
Print or check SHA1 (160-bit) checksums.

ファイルの指定がない場合や FILE が - の場合, 標準入力から読み込みを行います。

  -b, --binary         read in binary mode
  -c, --check          FILE から SHA1 チェックサムを読み込み、照合する
      --tag            create a BSD-style checksum
  -t, --text           テキストモードで読み込む (デフォルト)
  -z, --zero           end each output line with NUL, not newline,
                       and disable file name escaping

The following five options are useful only when verifying checksums:
      --ignore-missing  don't fail or report status for missing files
      --quiet          don't print OK for each successfully verified file
      --status         don't output anything, status code shows success
      --strict         exit non-zero for improperly formatted checksum lines
  -w, --warn           warn about improperly formatted checksum lines

      --help     この使い方を表示して終了する
      --version  バージョン情報を表示して終了する

The sums are computed as described in FIPS-180-1.  When checking, the input
should be a former output of this program.  The default mode is to print a
line with checksum, a space, a character indicating input mode ('*' for binary,
' ' for text or where binary is insignificant), and name for each FILE.

Note: There is no difference between binary mode and text mode on GNU systems.

GNU coreutils のオンラインヘルプ: <https://www.gnu.org/software/coreutils/>
翻訳に関するバグは <https://translationproject.org/team/ja.html> に連絡してください。
詳細な文書 <https://www.gnu.org/software/coreutils/sha1sum>
(ローカルでは info '(coreutils) sha1sum invocation' で参照可能)。

sha256sumの実施例です

$ sha256sum HelloWorld.txt 
a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e  HelloWorld.txt

sha512sumの実施例です

$ sha512sum HelloWorld.txt 
2c74fd17edafd80e8447b0d46741ee243b7eb74dd2149a0ab1b9246fb30382f27e853d8585719e0e67cbda0daa8f51671064615d645ae27acb15bfb1447f459b  HelloWorld.txt

OpenSSL

OpenSSLでの実施例です

$ openssl sha1 HelloWorld.txt 
SHA1(HelloWorld.txt)= 0a4d55a8d778e5022fab701977c5d840bbc486d0
$ cat HelloWorld.txt | openssl sha1
SHA1(stdin)= 0a4d55a8d778e5022fab701977c5d840bbc486d0
$ cat HelloWorld.txt | openssl dgst -sha1
SHA1(stdin)= 0a4d55a8d778e5022fab701977c5d840bbc486d0
$ cat HelloWorld.txt | openssl sha256
SHA256(stdin)= a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?