過時的 MD5 以及 SHA1
早期,常使用 md5, sha1 雜湊(hash)來進行加密,
但是md5已經能成功破解,及sha1 (, sha0) 都有理論的破解方式,因此還是推薦使用其他可替換的加密演算法。
md5
<?php
echo md5('your_password');//輸出 32 字元, 128-bit (16-byte)
sha1
<?php
echo sha1('your_password');//輸出 40 字元, 160-bit (20-byte)
SHA-2
SHA-2 於 2001年發布,其中在sha-2家族中(包括SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256), 最多人知道的就是sha-256,並且,sha-256在Linux系統和一些其他安全應用程序和協議(如TSL和SSL)中得到廣泛應用。 至今還未出現 SHA-2的有效攻擊,但仍有其他演算法持續在進行開發
SHA224
<?php
echo hash('sha224', 'your_password');//輸出 56 字元, 224-bit (28-byte)
SHA256
<?php
echo hash('sha256', 'your_password');//輸出 64 字元, 256-bit (32-byte)
SHA384
<?php
echo hash('sha384', 'your_password');//輸出 96 字元, 384-bit (48-byte)
SHA512
<?php
echo hash('sha512', 'your_password');//輸出 128 字元, 512-bit (64-byte)
列出所有PHP支援的演算法 PHP 提供了 可以透過 hash_algos() 來查詢
<?php
print_r(hash_algos());
/*php 5.6 version hash_algos results:
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
)
*/
再厲害的演算法,仍無法阻止智障密碼被破解,請把密碼設定複雜一點確保安全
最後,提醒 永遠不要試圖發明自己的加密