openssl_digest()
(PHP 5 >= 5.3.0, PHP 7)
计算摘要
说明
openssl_digest(string $data,string $method[,bool $raw_output= false]): string
使用给定的方法计算给定数据的摘要哈希值,并返回一个原始的或16进制编码的字符串。
Warning本函数还未编写文档,仅有参数列表。
参数
- $data
给定的数据。
- $method
要使用的摘要方法,比如"sha256",查看openssl_get_md_methods()函数获取更多可用的摘要方法。
- $raw_output
为
TRUE
时将会返回原始输出数据,否则返回值将会是16进制。
返回值
成功,返回摘要哈希值,或者在失败时返回FALSE
.
错误/异常
如果通过$method参数传递的是一个未知的摘要算法,将会抛出一个E_WARNING
级的错误。
参见
openssl_get_md_methods()
获取可用的摘要算法
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.
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" }
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.