gpt4 book ai didi

php-7 - PHP7 : Unknown hashing algorithm: sha256

转载 作者:行者123 更新时间:2023-12-04 19:52:17 24 4
gpt4 key购买 nike

在 PHP7 中,当我散列这样的字符串时:

$hash = hash("sha256", "password");

我有这个警告:
Unknown hashing algorithm: sha256

在 PHP 5.2.9 中,它可以工作。 php7 中是否弃用了 sha256?其他想法?

笔记
  • 扩展名“php_openssl.dll”已启用。
  • hash("sha512", "密码");//有效!
  • print_r( hash_algos() );[0] => md2 [1] => md4 [2] => md5 [3] => sha1 [4] => sha224 [5] => sha256
    [6] => sha384 [7] => sha512 ...
  • 最佳答案

    我知道你让它工作了,但我想补充一点,我已经浏览了 PHP7 源代码,而且没有理由每次都不能工作。

    ./ext/hash/hash.c ,我们定义可用哈希表:

    PHP_MINIT_FUNCTION(hash)
    {
    // ...
    zend_hash_init(&php_hash_hashtable, 35, NULL, NULL, 1);

    // ...
    php_hash_register_algo("sha224", &php_hash_sha224_ops);
    php_hash_register_algo("sha256", &php_hash_sha256_ops);
    php_hash_register_algo("sha384", &php_hash_sha384_ops);
    php_hash_register_algo("sha512", &php_hash_sha512_ops);
    // ...
    }
    php_hash_register_algo()也很简单:

    PHP_HASH_API void php_hash_register_algo(const char *algo, const php_hash_ops *ops) /* {{{ */
    {
    size_t algo_len = strlen(algo);
    char *lower = zend_str_tolower_dup(algo, algo_len);
    zend_hash_str_add_ptr(&php_hash_hashtable, lower, algo_len, (void *) ops);
    efree(lower);
    }

    那么 php_hash_sha256_ops ?这是在 ./ext/hash/hash_sha.c 中定义的:

    const php_hash_ops php_hash_sha256_ops = {
    (php_hash_init_func_t) PHP_SHA256Init,
    (php_hash_update_func_t) PHP_SHA256Update,
    (php_hash_final_func_t) PHP_SHA256Final,
    (php_hash_copy_func_t) php_hash_copy,
    32,
    64,
    sizeof(PHP_SHA256_CTX)
    };

    通过查看此文件中的代码,您还可以看到 PHP_SHA256Init() 中没有预防条件。 , PHP_SHA256Update() , 或 PHP_SHA256Final() .我找不到一种可能的方式 sha256可以禁用。

    关于php-7 - PHP7 : Unknown hashing algorithm: sha256,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33978535/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com