過時的 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
)
*/

再厲害的演算法,仍無法阻止智障密碼被破解,請把密碼設定複雜一點確保安全

最後,提醒 永遠不要試圖發明自己的加密

推薦延伸閱讀 現代PHP password_hash 雜湊加密採用隨機SALT 使用方式