public encrypt_sha256($str = ''){ return hash("sha256", $str); }PHP hash延申:
PHP 有什么 hashing 工具?
Hash Functions | Hash value 的长度 (bit) |
CRC32 | 32 |
MD5 | 128 |
SHA-1 | 160 |
(在PHP5.12以后可以使用 hash_algos()返回所有的hash算法,并从手册上得知现支持 35种算法;查看手册)
在PHP5 之前我们只有CRC32、MD5 和SHA1 三个内置的hash function,它们输出的hash value 长度如下:
Hash Functions Hash value 的长度 (bit)
CRC32 32
MD5 128
SHA-1 160
其中SHA-1 可说是最多人使用的hash function,原因是它的hash value 比其他的大,Collision 的机会便小得多。其次SHA 家族的hashing functions 是由美国国家安全部(NSA – National Security Agency) 设计,并被列为美国联邦资讯处理标准的一部分,所以给人较高的信心,很多复杂的安全方案例如SSL 都使用SHA-1。
PHP 还有两个需要额外安装的函式库支持更多hash function,就是mhash 和hash,Hash 从PHP 5.1.2 开始列为标准的模组,无须自行编译或安装,所以越来越多人使用。一些比SHA-1 更先进的hash function 都可以在这两个函式库中找到,例如属于SHA-2 家族的SHA-256 和SHA-512 等,不过由于SHA-1 的历史比较悠久,很多系统仍然继续使用它,尤其是用SHA-1 来进行登入验证的系统,由于hash function 的不可还原性,很难一下子改用其他hash function。
使用SHA-1 的方法很简单(PHP 的函式大都很简单,不是吗?):
echo sha1("I am a happy boy");Hash 的用法也很简单:
echo hash("sha256","I am a happy boy.");Hash 支援很多hash function,可以用hash_algo 查看你的PHP 版本支持什么:
print_r(hash_algos());