英語版
このページの英語版を見る
std.digest.ripemd
任意のデータの RIPEMD-160 ハッシュを計算する。RIPEMD-160ハッシュは20バイトの量である。
チェックサムやCRCのようなものだが、よりロバストである。
カテゴリー | 関数 |
---|---|
Template API | RIPEMD160 |
OOP API | RIPEMD160Digest |
Helpers | ripemd160Of |
License:
CTFE ダイジェストはCTFEでは機能しない
Authors:
Kai Nacke
The algorithm was designed by Hans Dobbertin, Antoon Bosselaers, and Bart Preneel.
The D implementation is a direct translation of the ANSI C implementation by Antoon Bosselaers.
The algorithm was designed by Hans Dobbertin, Antoon Bosselaers, and Bart Preneel.
The D implementation is a direct translation of the ANSI C implementation by Antoon Bosselaers.
Examples:
//テンプレートAPI import std.digest.md; ubyte[20] hash = ripemd160Of("abc"); writeln(toHexString(hash)); // "8EB208F7E05D987A9B044A8E98C6B087F15A0BFC" //データを供給する ubyte[1024] data; RIPEMD160 md; md.start(); md.put(data[]); md.start(); //再度開始する md.put(data[]); hash = md.finish();
Examples:
//OOP API import std.digest.md; auto md = new RIPEMD160Digest(); ubyte[] hash = md.digest("abc"); writeln(toHexString(hash)); // "8EB208F7E05D987A9B044A8E98C6B087F15A0BFC" //データを供給する ubyte[1024] data; md.put(data[]); md.reset(); //再度開始する md.put(data[]); hash = md.finish();
- struct
RIPEMD160
; - テンプレートAPI RIPEMD160の実装。 テンプレート API と OOP API の違いについてはstd.digest を参照のこと。Examples:
//単純な例、ripemd160Ofヘルパー関数を使った文字列のハッシュ化 ubyte[20] hash = ripemd160Of("abc"); //ハッシュ文字列を取得してみよう writeln(toHexString(hash)); // "8EB208F7E05D987A9B044A8E98C6B087F15A0BFC"
Examples://基本APIを使う RIPEMD160 hash; hash.start(); ubyte[1024] data; //ここでデータを初期化する... hash.put(data); ubyte[20] result = hash.finish();
Examples://テンプレートの機能を使おう: void doSomething(T)(ref T hash) if (isDigest!T) { hash.put(cast(ubyte) 0); } RIPEMD160 md; md.start(); doSomething(md); writeln(toHexString(md.finish())); // "C81B94933420221A7AC004A90242D8B1D3E5070D"
Examples://簡単な例 RIPEMD160 hash; hash.start(); hash.put(cast(ubyte) 0); ubyte[20] result = hash.finish(); writeln(toHexString(result)); // "C81B94933420221A7AC004A90242D8B1D3E5070D"
- pure nothrow @nogc @trusted void
put
(scope const(ubyte)[]data
...); 例:
RIPEMD160 dig; dig.put(cast(ubyte) 0); //single ubyte dig.put(cast(ubyte) 0, cast(ubyte) 0); //可変長 ubyte[10] buf; dig.put(buf); //バッファ
- pure nothrow @nogc @safe void
start
(); - RIPEMD160 ダイジェストの(再)初期化に使用する。
注釈: このRIPEMD160ダイジェストの実装では、デフォルトの構築後にstartを呼び出す を呼び出す必要はない。startの呼び出しは、ダイジェストをリセットするためにのみ必要である。
しかし、異なるダイジェスト型を扱う一般的なコードは、常にstartを呼び出すべきである。例:
RIPEMD160 digest; //digest.start(); //必要ない digest.put(0);
- pure nothrow @nogc @trusted ubyte[20]
finish
(); - 終了したRIPEMD160ハッシュを返す。これは startを呼び出す。 内部状態をリセットする。
例:
//簡単な例 RIPEMD160 hash; hash.start(); hash.put(cast(ubyte) 0); ubyte[20] result = hash.finish(); assert(toHexString(result) == "C81B94933420221A7AC004A90242D8B1D3E5070D");
- auto
ripemd160Of
(T...)(Tdata
); - これは std.digest.digestを使うための便利なエイリアスである。 RIPEMD160実装を使うための便利なエイリアスである。Examples:
ubyte[20] hash = ripemd160Of("abc"); writeln(hash); // digest!RIPEMD160("abc")
- alias
RIPEMD160Digest
= std.digest.WrapperDigest!(RIPEMD160).WrapperDigest; - OOP API RIPEMD160 の実装。 テンプレートと OOP API の違いについてはstd.digest を参照のこと。これは std.digest.WrapperDigest!RIPEMD160, の別名である。Examples:
//Digest.digestヘルパー関数を使用して文字列をハッシュする簡単な例 auto md = new RIPEMD160Digest(); ubyte[] hash = md.digest("abc"); //ハッシュ文字列を取得してみよう writeln(toHexString(hash)); // "8EB208F7E05D987A9B044A8E98C6B087F15A0BFC"
Examples://OOP機能を使おう: void test(Digest dig) { dig.put(cast(ubyte) 0); } auto md = new RIPEMD160Digest(); test(md); //カスタム・バッファを使おう: ubyte[20] buf; ubyte[] result = md.finish(buf[]); writeln(toHexString(result)); // "C81B94933420221A7AC004A90242D8B1D3E5070D"
Copyright © 1999-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku