openssl_digest

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

openssl_digestВычисляет дайджест

Описание

openssl_digest(string $data, string $digest_algo, bool $binary = false): string|false

Функция вычисляет значение дайджеста для переданных данных заданным методом. Функция возвращает необработанную строку или строку шестнадцатеричных чисел.

Список параметров

data

Данные.

digest_algo

Метод вычисления дайджеста, например sha256. Список доступных методов даёт описание функции openssl_get_md_methods().

binary

Если для параметра установили значение true, то функция вернёт необработанную строку. Иначе функция вернёт строку шестнадцатеричных чисел.

Возвращаемые значения

Функция возвращает вычисленный дайджест или false, если возникла ошибка.

Ошибки

Функция выдаёт ошибку уровня E_WARNING, если в параметр digest_algo передали неизвестный метод.

Смотрите также

add a note

User Contributed Notes 3 notes

up
9
mwgamera at gmail dot com
10 years ago
The second argument should be one of the values returned by openssl_get_md_methods() rather than hash_algos(). ‘Hash’ and ‘OpenSSL’ are independent extensions and support different selection of digest algorithms. Notably, Hash supports some non-cryptographic hashes like adler or crc.
up
-30
skyblackhawk at yahoo dot it
12 years ago
Example:
// $fileBuffer is buffer of file in open mode or a generic stream...
$fingerPrint = openssl_digest ($fileBuffer , "sha512");

$method parameter is one of hash_algos() array;

<? echo"<PRE>";
var_dump(hash_algos());
echo "</PRE>"
?>

Output:

array(42) {
[0]=>
string(3) "md2"
[1]=>
string(3) "md4"
[2]=>
string(3) "md5"
[3]=>
string(4) "sha1"
[4]=>
string(6) "sha224"
[5]=>
string(6) "sha256"
[6]=>
string(6) "sha384"
[7]=>
string(6) "sha512"
[8]=>
string(9) "ripemd128"
[9]=>
string(9) "ripemd160"
[10]=>
string(9) "ripemd256"
[11]=>
string(9) "ripemd320"
[12]=>
string(9) "whirlpool"
[13]=>
string(10) "tiger128,3"
[14]=>
string(10) "tiger160,3"
[15]=>
string(10) "tiger192,3"
[16]=>
string(10) "tiger128,4"
[17]=>
string(10) "tiger160,4"
[18]=>
string(10) "tiger192,4"
[19]=>
string(6) "snefru"
[20]=>
string(9) "snefru256"
[21]=>
string(4) "gost"
[22]=>
string(7) "adler32"
[23]=>
string(5) "crc32"
[24]=>
string(6) "crc32b"
[25]=>
string(7) "salsa10"
[26]=>
string(7) "salsa20"
[27]=>
string(10) "haval128,3"
[28]=>
string(10) "haval160,3"
[29]=>
string(10) "haval192,3"
[30]=>
string(10) "haval224,3"
[31]=>
string(10) "haval256,3"
[32]=>
string(10) "haval128,4"
[33]=>
string(10) "haval160,4"
[34]=>
string(10) "haval192,4"
[35]=>
string(10) "haval224,4"
[36]=>
string(10) "haval256,4"
[37]=>
string(10) "haval128,5"
[38]=>
string(10) "haval160,5"
[39]=>
string(10) "haval192,5"
[40]=>
string(10) "haval224,5"
[41]=>
string(10) "haval256,5"
}
up
-28
Anonymous
9 years ago
Hmm.. really @mwgamera? openssl_get_cipher_methods() returns cipher methods but openssl_digest() expects a digest method in the second parameter. However even the docu on this page links to the openssl_get_cipher_methods() method in the "See also" section (however this can be a coincidence). Shouldn't it be a digest method from openssl_get_md_methods() instead openssl_get_cipher_methods()?

I'm not very experienced in cryptography but I don't really understand why you would pass a cipher method to a hash function instead of a digest method.
To Top