hash_algos() - php 密码散列哈希函数
hash_algos()
(PHP 5 >= 5.1.2, PHP 7, PECL hash >= 1.1)
返回已注册的哈希算法列表
说明
hash_algos(void): array返回值
返回一个数值索引的数组,包含了受支持的哈希算法名称。
更新日志
版本 | 说明 |
---|---|
7.1.0 | 加入 sha512/224,sha512/256,sha3-224,sha3-256,sha3-384 以及 sha3-512 算法的支持。 |
5.6.0 | 加入对 gost-crypto 算法的支持。参照» RFC 4357,11.2 小节定义的 CryptoPro S-box 表格实现 GOST 哈希函数。 |
5.4.0 | 加入对于 joaat,fnv132 和 fnv164 算法的支持。移除 Salsa10 和 Salsa20 算法。 |
5.3.0 | 加入对 md2,ripemd256,ripemd320,salsa10,salsa20,snefru256 和 sha224 哈希算法的支持。 |
范例
Example #1hash_algos()例程
在 PHP 5.6.0 中,hash_algos()会返回下表所示的算法清单:
以上例程的输出类似于:
Array ( [0] => md2 [1] => md4 [2] => md5 [3] => sha1 [4] => sha224 [5] => sha256 [6] => sha384 [7] => sha512 [8] => ripemd128 [9] => ripemd160 [10] => ripemd256 [11] => ripemd320 [12] => whirlpool [13] => tiger128,3 [14] => tiger160,3 [15] => tiger192,3 [16] => tiger128,4 [17] => tiger160,4 [18] => tiger192,4 [19] => snefru [20] => snefru256 [21] => gost [22] => gost-crypto [23] => adler32 [24] => crc32 [25] => crc32b [26] => fnv132 [27] => fnv1a32 [28] => fnv164 [29] => fnv1a64 [30] => joaat [31] => haval128,3 [32] => haval160,3 [33] => haval192,3 [34] => haval224,3 [35] => haval256,3 [36] => haval128,4 [37] => haval160,4 [38] => haval192,4 [39] => haval224,4 [40] => haval256,4 [41] => haval128,5 [42] => haval160,5 [43] => haval192,5 [44] => haval224,5 [45] => haval256,5 )
参见
hash_hmac_algos()
Return a list of registered hashing algorithms suitable for hash_hmac
Ansewring to holdoffhunger avoid crc32, the are different results because the crc32(); use the algorithm 'crc32b'. To check this only have to write: echo hash('crc32b', 'The quick brown fox jumped over the lazy dog.'), "\n"; echo dechex (crc32('The quick brown fox jumped over the lazy dog.')); And check that both have the same results: 82a34642 82a34642
If you print the results of the hash_algos function and look at all of the available hashing functions, you will find three with duplicate functions: md5, sha1, crc32, and sha256. That means you can call the any of these function with either its own function or the hash function. For example, with the SHA1 function : However, the alternate title for the SHA256 algorithm is "getImageSignature", as part of the ImageMagick application package. Oddly, the CRC32 function returns different values when called from its own particular function (crc32()) compared to when it's called through the hash function (hash()). This leads me to suspect that they may be different implementations of the crc32 algorithm altogether. The different functions for SHA1 and MD5, however, produce the same results. The SHA-256 algorithm, as implemented in the ImageMagick function, also produces different results compared to the results of the hash_file() function within the Hash application package. For the String "1234567890", the single CRC32() Function (which doesn't have an option for binary, "raw data" representation) produces "639479525", but when called through the Hash() Function, that same string produces "b6536850". I cannot find the relationship of any of these values, as they are not inverses of each other, nor is their sum or difference equal to any power of two (as I suspected they might be an equal distance from 0 or 2^32). Both the SHA1 and MD5 alternate functions have the parameter of "TRUE/FALSE" at the end to indicate whether the result is given in binary (raw data) or not. Unfortunately, this often turns out to be data that doesn't print very well. It is recommended to be printed with the statement of printf("%u\n", $crc_32_value);. However, that often doesn't produce any usable results, either. The only method I have discovered is the "bin2hex" function, like so : However, bin2hex returns a hexadecimal representation, whereas you probably wanted a string of binary 1's and 0's. You can use the base_convert function, such as base_convert($md5_value_in_hex, 16, 2);. However, base_convert doesn't work on large numbers, so you have to write your own function for converting Hex to Binary. One other thing that will probably catch your attention is that half of the listed algorithms have similar names, but are represented with different numbers. That means that the algorithm takes parameters itself, such as number of bits for the resultant hash value and number of rounds to do in producing the hashed result. The first number in the title of the Hash Function usually indicates the size of the hash result, such as 128 bit for "haval128,3" and 160 bit for "tiger160,4". The second number, however, indicates the number of rounds, such as 5 rounds for "haval224,5".
These algorithms can be used to generate a session ID. Just pick a string value from the list and feed the session.hash_function directive with it. E.g.:
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)