Spec-Zone.ru › D

std.digest.md

Вычисляет хэши MD5 произвольных данных. Хэши MD5 — это 16-байтовые величины, подобные контрольной сумме или CRC, но более надёжные.

Категория Функции
API шаблонов MD5
API объектно-ориентированного программирования MD5Digest
Вспомогательные функции md5Of

Этот модуль соответствует API, определённым в std.digest. Чтобы понять различия между API шаблонов и API объектно-ориентированного программирования, см. std.digest.

Этот модуль публично импортирует std.digest и может быть использован как автономный модуль.

Лицензия:
Лицензия Boost 1.0.
CTFE
Хэширование не работает в CTFE
Авторы:
Piotr Szturmaj, Kai Nacke, Johannes Pfau
Эти функции и алгоритмы взяты из RSA Data Security, Inc. MD5 Message-Digest Algorithm.
Ссылки
Википедия о MD5
Исходный код
std/digest/md.d
Примеры:
//Template API
import std.digest.md;

//Feeding data
ubyte[1024] data;
MD5 md5;
md5.start();
md5.put(data[]);
md5.start(); //Start again
md5.put(data[]);
auto hash = md5.finish();
Примеры:
//OOP API
import std.digest.md;

auto md5 = new MD5Digest();
ubyte[] hash = md5.digest("abc");
writeln(toHexString(hash)); // "900150983CD24FB0D6963F7D28E17F72"

//Feeding data
ubyte[1024] data;
md5.put(data[]);
md5.reset(); //Start again
md5.put(data[]);
hash = md5.finish();
struct MD5;

Реализация MD5 API шаблонов. См. std.digest для различий между API шаблонов и API объектно-ориентированного программирования.

Примеры:
//Simple example, hashing a string using md5Of helper function
ubyte[16] hash = md5Of("abc");
//Let's get a hash string
writeln(toHexString(hash)); // "900150983CD24FB0D6963F7D28E17F72"
Примеры:
//Using the basic API
MD5 hash;
hash.start();
ubyte[1024] data;
//Initialize data here...
hash.put(data);
ubyte[16] result = hash.finish();
Примеры:
//Let's use the template features:
void doSomething(T)(ref T hash)
if (isDigest!T)
{
    hash.put(cast(ubyte) 0);
}
MD5 md5;
md5.start();
doSomething(md5);
writeln(toHexString(md5.finish())); // "93B885ADFE0DA089CDF634904FD59F71"
pure nothrow @nogc @trusted void put(scope const(ubyte)[] data...);

Используйте эту функцию для подачи данных в хеш-функцию. Также реализует интерфейс std.range.primitives.isOutputRange для ubyte и const(ubyte)[].

Пример
MD5 dig;
dig.put(cast(ubyte) 0); //single ubyte
dig.put(cast(ubyte) 0, cast(ubyte) 0); //variadic
ubyte[10] buf;
dig.put(buf); //buffer
pure nothrow @nogc @safe void start();

Используется для (повторной) инициализации хэш-функции MD5.

Примечание
Для этой реализации MD5 Digest вызов start после создания по умолчанию не нужен. Вызов start необходим только для сброса Digest.
Однако общий код, работающий с различными типами Digest, всегда должен вызывать start.
Пример
MD5 digest;
//digest.start(); //Not necessary
digest.put(0);
pure nothrow @nogc @trusted ubyte[16] finish();

Возвращает завершённый хэш MD5. Также вызывает start для сброса внутреннего состояния.

Примеры:
//Simple example
MD5 hash;
hash.start();
hash.put(cast(ubyte) 0);
ubyte[16] result = hash.finish();
auto md5Of(T...)(T data);

Это псевдоним для std.digest.digest с использованием реализации MD5.

Примеры:
ubyte[16] hash = md5Of("abc");
writeln(hash); // digest!MD5("abc")
alias MD5Digest = std.digest.WrapperDigest!(MD5).WrapperDigest;

Реализация MD5 API объектно-ориентированного программирования. См. std.digest для различий между API шаблонов и API объектно-ориентированного программирования.

Это псевдоним для std.digest.WrapperDigest!MD5, см. там для получения дополнительной информации.

Примеры:
//Simple example, hashing a string using Digest.digest helper function
auto md5 = new MD5Digest();
ubyte[] hash = md5.digest("abc");
//Let's get a hash string
writeln(toHexString(hash)); // "900150983CD24FB0D6963F7D28E17F72"
Примеры:
//Let's use the OOP features:
void test(Digest dig)
{
 dig.put(cast(ubyte) 0);
}
auto md5 = new MD5Digest();
test(md5);

//Let's use a custom buffer:
ubyte[16] buf;
ubyte[] result = md5.finish(buf[]);
writeln(toHexString(result)); // "93B885ADFE0DA089CDF634904FD59F71"

© 1999–2021 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/std_digest_md.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API