Spec-Zone.ru › D

std.digest.hmac

Этот пакет реализует алгоритм кода аутентификации сообщений на основе хешей (HMAC), как определено в RFC2104. См. также соответствующую статью Википедии.

Лицензия:
Boost License 1.0.
Исходный код
std/digest/hmac.d
Примеры:
Реализация API HMAC для шаблонов. Это реализует HMAC над дайджестом H. Если H не предоставляет информацию о размере блока, его можно явно указать, используя второй перегруз. Этот тип соответствует std.digest.isDigest. Вычисление HMAC над входной строкой
import std.ascii : LetterCase;
import std.digest : toHexString;
import std.digest.sha : SHA1;
import std.string : representation;

auto secret = "secret".representation;
assert("The quick brown fox jumps over the lazy dog"
        .representation
        .hmac!SHA1(secret)
        .toHexString!(LetterCase.lower) == "198ea1ea04c435c1246b586a06d5cf11c3ffcda6");
struct HMAC(H, size_t hashBlockSize) if (hashBlockSize % 8 == 0);

template hmac(H) if (isDigest!H && hasBlockSize!H)

auto hmac(H, size_t blockSize)(scope const(ubyte)[] secret)
Ограничения: if (isDigest!H);

Перегрузка HMAC для использования, если H не предоставляет информацию о размере своего блока.

Примеры:
import std.digest.sha : SHA1;
import std.string : representation;
string data1 = "Hello, world", data2 = "Hola mundo";
auto hmac = HMAC!SHA1("My s3cR3T keY".representation);
auto digest = hmac.put(data1.representation)
                  .put(data2.representation)
                  .finish();
static immutable expected = [
    197, 57, 52, 3, 13, 194, 13,
    36, 117, 228, 8, 11, 111, 51,
    165, 3, 123, 31, 251, 113];
writeln(digest); // expected
this(scope const(ubyte)[] secret);

Создает дайджест HMAC, используя указанный секрет.

Примеры:
import std.digest.sha : SHA1;
import std.string : representation;
auto hmac = HMAC!SHA1("My s3cR3T keY".representation);
hmac.put("Hello, world".representation);
static immutable expected = [
    130, 32, 235, 44, 208, 141,
    150, 232, 211, 214, 162, 195,
    188, 127, 52, 89, 100, 68, 90, 216];
writeln(hmac.finish()); // expected
ref HMAC!(H, blockSize) start() return;

Переинициализирует дайджест, подготовив его к повторному использованию.

Примечание
Конструктор оставляет дайджест в инициализированном состоянии, поэтому этот метод необходимо вызывать только если необходимо повторно использовать незавершенный дайджест.
Возвращает:
Ссылка на дайджест для удобства цепочки вызовов.
Примеры:
import std.digest.sha : SHA1;
import std.string : representation;
string data1 = "Hello, world", data2 = "Hola mundo";
auto hmac = HMAC!SHA1("My s3cR3T keY".representation);
hmac.put(data1.representation);
hmac.start();                   // reset digest
hmac.put(data2.representation); // start over
static immutable expected = [
    122, 151, 232, 240, 249, 80,
    19, 178, 186, 77, 110, 23, 208,
    52, 11, 88, 34, 151, 192, 255];
writeln(hmac.finish()); // expected
ref HMAC!(H, blockSize) put(in ubyte[] data...) return;

Вводит часть данных в вычисление хеша. Этот метод позволяет использовать тип в качестве std.range.OutputRange.

Возвращает:
Ссылка на дайджест для удобства цепочки вызовов.
Примеры:
import std.digest.hmac, std.digest.sha;
import std.string : representation;
string data1 = "Hello, world", data2 = "Hola mundo";
auto hmac = HMAC!SHA1("My s3cR3T keY".representation);
hmac.put(data1.representation)
    .put(data2.representation);
static immutable expected = [
    197, 57, 52, 3, 13, 194, 13,
    36, 117, 228, 8, 11, 111, 51,
    165, 3, 123, 31, 251, 113];
writeln(hmac.finish()); // expected
DigestType!H finish();

Сбрасывает дайджест и возвращает завершённый хеш.

Примеры:
import std.digest.sha : SHA1;
import std.string : representation;
string data1 = "Hello, world", data2 = "Hola mundo";
auto hmac = HMAC!SHA1("My s3cR3T keY".representation);
auto digest = hmac.put(data1.representation)
                  .put(data2.representation)
                  .finish();
static immutable expected = [
    197, 57, 52, 3, 13, 194, 13,
    36, 117, 228, 8, 11, 111, 51,
    165, 3, 123, 31, 251, 113];
writeln(digest); // expected

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

Spec-Zone.ru

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