• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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级的错误。

    参见

    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.