Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > digestライブラリ > Digest::Baseクラス
class Digest::Base
クラスの継承リスト: Digest::Base < Digest::Instance < Digest::Class < Object < Kernel < BasicObject
Abstract
すべての 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 クラスは以下の共通インタフェースを持つ。
特異メソッド
digest(str)
-
与えられた文字列に対するハッシュ値を文字列で返す。 new(str).digest と等価。
file(path) -> object
-
新しいダイジェストオブジェクトを生成し、 ファイル名 file で指定したファイルの内容を読み込み、 そのダイジェストオブジェクトを返します。
- [PARAM] path:
- 読み込み対象のファイル名です。
- [RETURN]
- ダイジェストオブジェクトを返します。
使用例(SHA256の場合)
digest = Digest::SHA256.file("X11R6.8.2-src.tar.bz2") digest.hexdigest # => "f02e3c85572dc9ad7cb77c2a638e3be24cc1b5bea9fdbb0b0299c9668475c534"
hexdigest(str)
-
与えられた文字列に対するハッシュ値を、ASCIIコードを使って 16進数の列を示す文字列にエンコードして返す。 new(str).hexdigest と等価。
new
-
新しいダイジェストオブジェクトを生成する。
インスタンスメソッド
update(str)
self << str
-
文字列を追加する。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
-
与えられたダイジェストオブジェクトと比較する。
- [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
-
与えられた文字列を digest 値、もしくは hexdigest 値と比較する。 いずれの値と見るかは与えられた文字列の長さによって自動判別 される。
- [PARAM] str:
- 比較対象の(ダイジェストの)文字列
require 'digest/md5' digest = Digest::MD5.new digest.update("ruby") p digest == "58e53d1324eef6265fdb97b08ed9aadf" # => true
block_length -> Integer
-
ダイジェストのブロック長を取得します。 例えば、Digest::MD5であれば64、Digest::SHA512であれば128です。
本メソッドは、Digest::MD5などのダイジェストのサブクラスにより、 それぞれの実装に適したものにオーバーライドされます。
例: Digest::MD、Digest::SHA1、Digest::SHA512のブロック長を順番に調べる。
for a in ["MD5", "SHA1", "SHA512"] digest = Digest(a).new p digest.block_length # => 64, 128, 128 end
dup
clone
-
ダイジェストオブジェクトの複製を作る。
digest -> String
-
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
-
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#digest、Digest::Base#hexdigest!
digest_length -> Integer
length -> Integer
size -> Integer
-
- [UNKNOWN_META_INFO] @todo:
ダイジェストのハッシュ値のバイト長を取得する。 例えば、Digest::MD5であれば16、Digest::SHA1であれば20です。
If not, digest_obj.digest().length() is returned. (この動作が分かりません。 私の手元の1.8.6ではdigest.length == digest_lengthでした。)
本メソッドは、Digest::MD5などのダイジェストのサブクラスにより、 それぞれの実装に適したものにオーバーライドされます。
例: Digest::MD、Digest::SHA1、Digest::SHA512のハッシュ値のバイト長を順番に調べる。
for a in ["MD5", "SHA1", "SHA512"] digest = Digest(a).new p digest.digest_length # => 16, 20, 64 end
file(path) -> self
-
ファイル名 file で指定したファイルの内容を読み込んでダイジェストを更新し、 オブジェクト自身を返します。
- [PARAM] path:
- 読み込み対象のファイル名です。
- [RETURN]
- ダイジェストオブジェクトを返します。
例(MD5の場合)
require 'digest/md5' digest = Digest::MD5.new digest.file("/path/to/file") # => Digest::MD5のインスタンス digest.hexdigest # => "/path/to/file"のMD5値
hexdigest -> String
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
-
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#hexdigest、Digest::Base#digest!
reset -> self
-
オブジェクトの状態を初期状態(newした直後と同様の状態)に戻し、 オブジェクト自身を返します。
本メソッドは、Digest::MD5などのダイジェストのサブクラスにより、 それぞれの実装に適したものにオーバーライドされます。