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

使用给定方法计算给定数据的摘要哈希值,并返回原始或 binhex 编码的字符串。

参数

data

数据。

digest_algo

要使用的摘要方法,例如 "sha256",请参阅 openssl_get_md_methods() 获取可用摘要方法的列表。

binary

设置为 true 将以原始输出数据形式返回,否则返回值为 binhex 编码。

返回值

成功时返回摘要哈希值,失败时返回 false

错误/异常

如果通过 digest_algo 参数传递了未知签名算法,则会发出 E_WARNING 级别的错误。

参见

添加备注

用户贡献的备注 3 个备注

9
mwgamera at gmail dot com
11 年前
第二个参数应该是 openssl_get_md_methods() 返回的值之一,而不是 hash_algos()。'Hash' 和 'OpenSSL' 是独立的扩展,支持不同的摘要算法选择。值得注意的是,Hash 支持一些非密码哈希,如 adler 或 crc。
-29
skyblackhawk at yahoo dot it
13 年前
示例
// $fileBuffer 是以打开模式打开的文件的缓冲区或通用流...
$fingerPrint = openssl_digest ($fileBuffer , "sha512");

$method 参数是 hash_algos() 数组中的一个值;

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

输出

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"
}
-28
匿名
10 年前
嗯.. 真的 @mwgamera 吗?openssl_get_cipher_methods() 返回密码方法,但 openssl_digest() 在第二个参数中需要摘要方法。然而,即使此页面上的文档也在 "另请参见" 部分链接到 openssl_get_cipher_methods() 方法(但这可能是巧合)。它不应该从 openssl_get_md_methods() 中使用摘要方法而不是 openssl_get_cipher_methods() 吗?

我对密码学不太了解,但我不太明白为什么你将密码方法传递给哈希函数而不是摘要方法。
To Top