このマニュアルは既にメンテナンスが終了したバージョンの Ruby を対象としています。 最新版のマニュアルへ

Ruby 3.2 リファレンスマニュアル

class Digest::Base

[edit]

要約

すべての Digest::XXX クラスの基底クラスです。

例えば、MD5 値を得るには以下のようにします。

require 'digest/md5'

p Digest::MD5.hexdigest('abc')               #=> '900150983cd24fb0d6963f7d28e17f72'
p Digest::MD5.file('ruby-1.8.5.tar.gz').to_s #=> '3fbb02294a8ca33d4684055adba5ed6f'

すべての Digest::XXX クラスは以下の共通インタフェースを持ちます。

目次

特異メソッド
インスタンスメソッド

継承しているメソッド

特異メソッド

base64digest(str) -> StringRuby 3.0 から[permalink][rdoc][edit]

与えられた文字列に対するハッシュ値を、Base64 エンコードした文字列にして返します。 new(str).base64digest と等価です。

返す文字列は '=' でパディングされ、改行は含まれません。

require 'digest'
p Digest::MD5.base64digest('ruby') # => "WOU9EyTu9iZf25ewjtmq3w=="

[SEE_ALSO] Digest::Base#base64digest

digest(str) -> String[permalink][rdoc][edit]

与えられた文字列に対するハッシュ値を文字列で返します。 new(str).digest と等価です。

file(path) -> object[permalink][rdoc][edit]

新しいダイジェストオブジェクトを生成し、ファイル名 file で指定したファイルの内容を読み込み、そのダイジェストオブジェクトを返します。

[PARAM] path:
読み込み対象のファイル名です。
[RETURN]
ダイジェストオブジェクトを返します。
使用例(SHA256の場合)
require 'digest'
digest = Digest::SHA256.file("X11R6.8.2-src.tar.bz2")
p digest.hexdigest
# => "f02e3c85572dc9ad7cb77c2a638e3be24cc1b5bea9fdbb0b0299c9668475c534"
hexdigest(str) -> String[permalink][rdoc][edit]

与えられた文字列に対するハッシュ値を、ASCIIコードを使って 16進数の列を示す文字列にエンコードして返します。 new(str).hexdigest と等価です。

new -> Digest::Base[permalink][rdoc][edit]

新しいダイジェストオブジェクトを生成します。

インスタンスメソッド

update(str) -> self[permalink][rdoc][edit]
self << str -> self

文字列を追加します。self を返します。複数回updateを呼ぶことは文字列を連結してupdateを呼ぶことと同じです。すなわち m.update(a); m.update(b) は m.update(a + b) と、 m << a << b は m << a + b とそれぞれ等価です。

[PARAM] str:
追加する文字列
require 'digest/md5'

digest = Digest::MD5.new
digest.update("r")
digest.update("u")
digest.update("b")
digest.update("y")
p digest.hexdigest # => "58e53d1324eef6265fdb97b08ed9aadf"

digest = Digest::MD5.new
digest << "r"
digest << "u"
digest << "b"
digest << "y"
p digest.hexdigest # => "58e53d1324eef6265fdb97b08ed9aadf"
self == md -> bool[permalink][rdoc][edit]

与えられたダイジェストオブジェクトと比較します。

[PARAM] md:
比較対象のダイジェストオブジェクト
require 'digest/md5'
digest1 = Digest::MD5.new
digest1.update("ruby")
digest2 = Digest::MD5.new
digest2.update("ruby")
p digest1 == digest2 # => true
digest2.update("RUBY")
p digest1 == digest2 # => false
self == str -> bool[permalink][rdoc][edit]

与えられた文字列を hexdigest 値と見て、自身の hexdigest 値と比較します。

[PARAM] str:
比較対象の hexdigest 文字列
require 'digest/md5'
digest = Digest::MD5.new
digest.update("ruby")
p digest == "58e53d1324eef6265fdb97b08ed9aadf" # => true
base64digest(str = nil) -> StringRuby 3.0 から[permalink][rdoc][edit]

updateや<<によって追加した文字列に対するハッシュ値を、Base64 エンコードした文字列にして返します。

引数 str を省略した場合は、オブジェクトの状態はそのまま保持されます。引数 str を指定した場合は、指定した文字列に対するハッシュ値を返し、処理の前後でオブジェクトの状態を初期状態(newした直後と同様の状態)に戻します。

返す文字列は '=' でパディングされ、改行は含まれません。

[PARAM] str:
ハッシュ値を計算する対象の文字列です。省略した場合は、updateや<<で追加した内容に対するハッシュ値を返します。
require 'digest/md5'
digest = Digest::MD5.new
digest.update("ruby")
p digest.base64digest        # => "WOU9EyTu9iZf25ewjtmq3w=="
p digest.hexdigest           # => "58e53d1324eef6265fdb97b08ed9aadf" (状態は保持される)

p digest.base64digest("abc") # => "kAFQmDzST7DWlj99KOF/cg=="
p digest.hexdigest           # => "d41d8cd98f00b204e9800998ecf8427e" (初期状態に戻る)

[SEE_ALSO] Digest::Base#digestDigest::Base#hexdigestDigest::Base.base64digest

base64digest! -> StringRuby 3.0 から[permalink][rdoc][edit]

updateや<<によって追加した文字列に対するハッシュ値を、Base64 エンコードした文字列にして返します。 Digest::Base#base64digestと違い、メソッドの処理後、オブジェクトの状態を初期状態(newした直後と同様の状態)に戻します。

require 'digest/md5'
digest = Digest::MD5.new
digest.update("ruby")
p digest.base64digest!  # => "WOU9EyTu9iZf25ewjtmq3w=="
p digest.hexdigest      # => "d41d8cd98f00b204e9800998ecf8427e"

[SEE_ALSO] Digest::Base#base64digest

block_length -> Integer[permalink][rdoc][edit]

ダイジェストのブロック長を取得します。例えば、Digest::MD5であれば64、Digest::SHA512であれば128です。

本メソッドは、Digest::MD5などのダイジェストのサブクラスにより、それぞれの実装に適したものにオーバーライドされます。

例: Digest::MD、Digest::SHA1、Digest::SHA512のブロック長を順番に調べる。

require 'digest'
p ["MD5", "SHA1", "SHA512"].map{|a| Digest(a).new().block_length } # => [64, 128, 128]
dup -> Digest::Base[permalink][rdoc][edit]
clone -> Digest::Base

ダイジェストオブジェクトの複製を作ります。

digest -> String[permalink][rdoc][edit]

updateや<<によって追加した文字列に対するハッシュ値を文字列で返します。

返す文字列は、MD5では16バイト長、SHA1およびRMD160では20バイト長、 SHA256では32バイト長、SHA384では48バイト長、SHA512では64バイト長です。

# MD5の場合
require 'digest/md5'
digest = Digest::MD5.new
digest.update("ruby")
p digest.digest # => "X\345=\023$\356\366&_\333\227\260\216\331\252\337"

[SEE_ALSO] Digest::Base#hexdigest

digest! -> String[permalink][rdoc][edit]

updateや<<によって追加した文字列に対するハッシュ値を文字列で返します。 Digest::Base#digestと違い、メソッドの処理後、オブジェクトの状態を初期状態(newした直後と同様の状態)に戻します。

返す文字列は、MD5では16バイト長、SHA1およびRMD160では20バイト長、 SHA256では32バイト長、SHA384では48バイト長、SHA512では64バイト長です。

# MD5の場合
require 'digest/md5'
digest = Digest::MD5.new
digest.update("ruby")
p digest.digest! # => "X\345=\023$\356\366&_\333\227\260\216\331\252\337"
p digest.digest! # => "\324\035\214\331\217\000\262\004\351\200\t\230\354\370B~"

[SEE_ALSO] Digest::Base#digestDigest::Base#hexdigest!

digest_length -> Integer[permalink][rdoc][edit]
length -> Integer
size -> Integer

ダイジェストのハッシュ値のバイト長を取得します。例えば、Digest::MD5であれば16、Digest::SHA1であれば20です。

本メソッドは、Digest::MD5などのダイジェストのサブクラスにより、それぞれの実装に適したものにオーバーライドされます。

例: Digest::MD、Digest::SHA1、Digest::SHA512のハッシュ値のバイト長を順番に調べる。

require 'digest'
p ["MD5", "SHA1", "SHA512"].map{|a| Digest(a).new().digest_length } # => [16, 20, 64]
file(path) -> self[permalink][rdoc][edit]

ファイル名 file で指定したファイルの内容を読み込んでダイジェストを更新し、オブジェクト自身を返します。

[PARAM] path:
読み込み対象のファイル名です。
[RETURN]
ダイジェストオブジェクトを返します。
例(MD5の場合)
require 'digest/md5'
digest = Digest::MD5.new
p digest.file("/path/to/file") # => Digest::MD5のインスタンス
p digest.hexdigest # => "/path/to/file"のMD5値
hexdigest -> String[permalink][rdoc][edit]
to_s -> String

updateや<<によって追加した文字列に対するハッシュ値を、 ASCIIコードを使って16進数の列を示す文字列にエンコードして返します。

返す文字列は、 MD5では32バイト長、SHA1およびRMD160では40バイト長、SHA256では64バイト長、 SHA384では96バイト長、SHA512では128バイト長です。

Rubyで書くと以下と同じです。

def hexdigest
  digest.unpack("H*")[0]
end
# MD5の場合
require 'digest/md5'
digest = Digest::MD5.new
digest.update("ruby")
p digest.hexdigest # => "58e53d1324eef6265fdb97b08ed9aadf"

[SEE_ALSO] Digest::Base#digest

hexdigest! -> String[permalink][rdoc][edit]

updateや<<によって追加した文字列に対するハッシュ値を、 ASCIIコードを使って16進数の列を示す文字列にエンコードして返します。 Digest::Base#hexdigestと違い、メソッドの処理後、オブジェクトの状態を初期状態(newした直後と同様の状態)に戻します。

# MD5の場合
require 'digest/md5'
digest = Digest::MD5.new
digest.update("ruby")
p digest.hexdigest! # => "58e53d1324eef6265fdb97b08ed9aadf"
p digest.hexdigest! # => "d41d8cd98f00b204e9800998ecf8427e"

[SEE_ALSO] Digest::Base#hexdigestDigest::Base#digest!

reset -> self[permalink][rdoc][edit]

オブジェクトの状態を初期状態(newした直後と同様の状態)に戻し、オブジェクト自身を返します。

本メソッドは、Digest::MD5などのダイジェストのサブクラスにより、それぞれの実装に適したものにオーバーライドされます。