Hash Functions
1. Danh sách các hàm
md5[] | Chuyển một chuỗi sang dạng một chuỗi mới đã được mã hóa theo tiêu chuẩn MD5 [32 bít]. [Trong PHP không hỗ trợ giải mã một chuỗi đã mã hóa MD5 sang dạng ban đầu.] |
sha1[] | Chuyển một chuỗi sang một chuỗi mới đã được mã hóa theo tiêu chuẩn sha1 . [Trong php không có hàm nào hỗ trợ chuyển một chuỗi đã được sử dụng sha1[] sang chuỗi ban đầu.]
|
md5_file[] | Chỉ định một file bất kì để chuyển sang một chuỗi được mã hóa theo tiêu chuẩn MD5[32 bit] , [trong PHP không hỗ trợ giải mã một chuỗi đã mã hóa MD5 sang dạng ban đầu, hàm này khá giống với hàm md5[]; ]
|
hash_algos[] | Hàm hash_algos[] trả về một mảng bao gồm danh sách các thuật toán mã hóa được hỗ trợ.
|
hash[] | Hàm hash[] sẽ mã hóa truyền vào theo một thuật toán nhất định.
|
hash_init[] | Hàm hash_init[] sẽ quy định thuật toán mã hóa.
|
hash_update[] | Hàm hash_update[] sẽ tiến hành cập nhật chuỗi cần mã hóa và tài nguyên quy định thuật toán mã hóa từ hàm hash_init[] vào quá trình mã hóa.
|
hash_final[] | Hàm hash_final[] sẽ hoàn thành bước cuối cùng trong quá trình mã hóa và nhận về kết quả mã hóa.
|
hash_copy[] | Hàm hash_copy[] sẽ sao chép tài nguyên quy định thuật toán mã hóa và lưu vào biến nào đó.
|
hash_file[] | Hàm hash_file[] sẽ mã hóa nội dung của file được truyền vào theo thuật toán nhất định.
|
hash_equals[] | Hàm hash_equals[] sẽ so sánh hai chuỗi đã được mã hóa xem chúng có giống nhau hay không
|
2. Chi tiết về các hàm
2.1. md5
Cú pháp
md5[string $str [, bool $raw_output = FALSE]] // Hàm sẽ trả về một chuỗi thập lục phân với chiều dài 32 ký tự [đã mã hóa]
Trong đó:
$str
là chuỗi bạn muốn mã hóa
$raw_output
có giá trị true hoặcfalse
, mặc định làfalse
:
- Nếu
true
: hàm sẽ trả về chuỗi nhị phân 16 ký tự đã mã hóa- Nếu
false
: hàm trả về chuỗi bình thường gồm 32 ký tự đã mã hóa
Ví dụ:
Mã hóa với $row_output = false
$str = 'truongthinhi';
echo md5[$str]; // 3679eb61591196c7fbb4591986a8df89
echo md5[$str, false]; // 3679eb61591196c7fbb4591986a8df89
Mã hóa với $row_output = true
$str = 'truongthinhi';
echo md5[$str, true]; // 6y�aY����Y��߉
2.2. sha1
Cú pháp:
sha1[string $str [, bool $raw_output = FALSE]] // Trả ra một chuỗi số thập lục phân với chiều dài 40 ký tự
Trong đó:
$str
là chuỗi cần mã hóa
$raw_output
có giá trịtrue
hoặcfalse
, mặc định làfalse
.
- Nếu
true
thì hàm sẽ trả về chuỗi nhị phân với 20 ký tự [đã mã hóa]- Nếu
false
thì hàm trả về chuỗi thập lục phân gồm 40 ký tự [đã mã hóa]
Ví dụ:
Mã hóa với $raw_output = false
$str = 'truongthinhi';
echo sha1[$str]; // ec74b54dc6251b3e8964812aacf4c65c2e059122
echo sha1[$str, false]; // ec74b54dc6251b3e8964812aacf4c65c2e059122
Mã hóa với $raw_output = true
$str = 'truongthinhi';
echo sha1[$str, true]; // ec74b54dc6251b3e8964812aacf4c65c2e059122
2.3. md5_file
Cú pháp:
string md5_file[string $str [, bool $raw_output = false]]
// Hàm sẽ trả về một chuỗi thập lục phân với chiều dài 32 ký tự [đã mã hóa]
Trong đó:
$str
là chuỗi bạn muốn mã hóa
$raw_output
có giá trị true hoặcfalse
, mặc định làfalse
:
- Nếu
true
: hàm sẽ trả về chuỗi nhị phân 16 ký tự đã mã hóa- Nếu
false
: hàm trả về chuỗi bình thường gồm 32 ký tự đã mã hóa Ví dụ:
Mã hóa với $row_output = false
// Các bạn tạo file mới trên local trước đã nha, file mới của mình tên là testHashFile.txt
file_put_contents["testHashFile.txt", "Mình đang test hàm hash_file nha."];
$file = 'testHashFile.txt';
echo md5_file[$file, false]; // ec93df26a79d51c7bb2bebe5b2bbc945
Mã hóa với $row_ouput = true
$file = 'testHashFile.txt';
echo md5_file[$file, true]; //
2.4. hash_algos
Cú pháp:
hash_algos[]; // Hàm sẽ trả về một mảng liên tục chứa danh sách các thuật toán mã hóa được hỗ trợ.
Ví dụ:
$arr = hash_algos[];
print_r[$arr];
Kết quả:
Array
[
[0] => md2
[1] => md4
[2] => md5
[3] => sha1
[4] => sha224
[5] => sha256
[6] => sha384
[7] => sha512/224
[8] => sha512/256
[9] => sha512
[10] => sha3-224
[11] => sha3-256
[12] => sha3-384
[13] => sha3-512
[14] => ripemd128
[15] => ripemd160
[16] => ripemd256
[17] => ripemd320
[18] => whirlpool
[19] => tiger128,3
[20] => tiger160,3
[21] => tiger192,3
[22] => tiger128,4
[23] => tiger160,4
[24] => tiger192,4
[25] => snefru
[26] => snefru256
[27] => gost
[28] => gost-crypto
[29] => adler32
[30] => crc32
[31] => crc32b
[32] => crc32c
[33] => fnv132
[34] => fnv1a32
[35] => fnv164
[36] => fnv1a64
[37] => joaat
[38] => haval128,3
[39] => haval160,3
[40] => haval192,3
[41] => haval224,3
[42] => haval256,3
[43] => haval128,4
[44] => haval160,4
[45] => haval192,4
[46] => haval224,4
[47] => haval256,4
[48] => haval128,5
[49] => haval160,5
[50] => haval192,5
[51] => haval224,5
[52] => haval256,5
]
2.5. hash
Cú pháp:
hash[$algo, $str, $raw_output];
// Hàm sẽ trả về chuỗi được tính toán dưới dạng nhị phân nếu $raw_output mang giá trị TRUE,
// và trả về chuỗi được tính toán dưới dạng thập phân nếu $raw_output mang giá trị FALSE .
Trong đó:
$algo
là thuật toán mã hóa.
$str
là chuỗi cần mã hóa.
$raw_output
là tham số, mặc định mang giá trịFALSE
chuỗi trả về sẽ là chuỗi in thường thập phân. Nếu$raw_output
mang giá trịTRUE
chuỗi trả về sẽ là chuỗi theo kiểu nhị phân.
Ví dụ:
Mã hóa theo kiểu "ripemd160":
echo hash['ripemd160', 'The quick brown fox jumped over the lazy dog.']; // 92a5ec97824260974efb2a3a3d07c48df1afe99a
echo hash['ripemd160', 'The quick brown fox jumped over the lazy dog.', true]; // ��엂B`�N�*:=č��
Mã hóa theo kiểu "md5":
echo hash['md5', 'The quick brown fox jumped over the lazy dog.']; // 1397c8e097423f2099d29fc72143b3e6
echo md5["The quick brown fox jumped over the lazy dog."]; // 41bf1887028c20e22b00c84d08ec192c
2.6. hash_init
Cú pháp:
hash_init[$algo];
// Hàm sẽ trả về một tài nguyên quy định thuật toán mã hóa,
// tài nguyên này sẽ được sử dụng trong các hàm hash_update[], hash_update_stream[], hash_update_file[], và hash_final[].
Trong đó:
$algo
là thuật toán mã hóa.
Ví dụ:
$ctx = hash_init['md5'];
hash_update[$ctx, 'This a test string'];
echo hash_final[$ctx]; // d25a9357d0b6daa60fae67ab419a1f20
2.7. hash_update
Trong trường hợp ta muốn thay đổi thuật toán mã hóa hoặc chuỗi cần mã hóa, ta sẽ sử dụng hàm hash_update[]
Cú pháp:
hash_update[$context, $str];
// Hàm luôn trả về TRUE nếu $context là một tài nguyên hợp lê. Nếu $context không hợp lệ hàm sẽ báo lỗi.
Trong đó:
$context
là tài nguyên quy định thuật toán mã hóa. Nó chính là kết quả trả về từ hàmhash_init[]
.
$str
là chuỗi cần mã hóa.
Ví dụ:
$ctx = hash_init['md5'];
echo hash_update[$ctx, 'this is a test']; // 1
echo hash_final[$ctx]; // 54b0c58c7ce9f2a8b551351102ee0938
echo md5['this is a test']; // 54b0c58c7ce9f2a8b551351102ee0938
2.8. hash_final
Cú pháp:
hash_final[$context, $raw_output]; // Hàm chả về chuỗi đã được mã hóa.
Trong đó:
$context
sẽ là tài nguyên quy định thuật toán mã hóa.$context
chính là kết quả của hàmhash_init[]
.
$raw_output
là tham số không bắt buộc, giá trị mặc định làFALSE
.
- Nếu
$raw_output = FALSE
, hàmhash_final[]
sẽ trả về kết quả là chuỗi thập phân in thường.- Nếu
$raw_output = TRUE
, hàmhash_final[]
sẽ trả về kết quả là chuỗi nhị phân.
Ví dụ:
Sử dụng hàm hash_final[]
nhận kết quả là chuỗi thập phân in thường:
$ctx = hash_init['md5'];
hash_update[$ctx, 'this is a test'];
echo hash_final[$ctx]; // 54b0c58c7ce9f2a8b551351102ee0938
2.9. hash_copy
Cú pháp:
hash_copy[$context];
// Hàm sẽ trả về một tài nguyên quy định thuật toán mã hóa. Tài nguyên tương đương với tài nguyên truyền vào.
Trong đó:
$context
là tài nguyền quy định thuật toán mã hóa.$context
là kết quả trả về của hàmhash_init[]
.
Ví dụ:
$ctx = hash_init['md5'];
hash_update[$ctx, 'This is a test'];
$copy = hash_copy[$ctx];
echo hash_final[$ctx]; // ce114e4501d2f4e2dcea3e17b546f339
echo hash_final[$copy]; // ce114e4501d2f4e2dcea3e17b546f339
2.10. hash_file
Cú pháp:
hash_file[$algo, $filename, $raw_output];
// Kết quả trả về là một chuỗi đã được mã hóa từ nội dung của file truyền vào.
Trong đó:
$algo
là tên của thuật toán mã hóa[ md5, md4 .v.v.].
$filename
là đường dẫn tới file cần mã hóa nội dung.
$raw_output
là tham số không bắt buộc, mặc định mang giá trịFALSE
:
- Nếu
$raw_output = FALSE
, hàm sẽ trả về chuỗi mã hóa dưới dạng chuỗi thập phân in thường.- Nếu
$raw_output = TRUE
, hàm sẽ trả về chuỗi mã hóa dưới dạng chuỗi nhị phân.
Ví dụ:
// Mình lấy luôn file testHashFile.txt ở trên đã tạo nha
echo hash_file['md5', 'testHashFile.txt']; // ec93df26a79d51c7bb2bebe5b2bbc945
2.11. hash_equals
Cú pháp
hash_equals[$known_string, $user_string]; // Trả về `TRUE` nếu hai chuỗi giống nhau, trả về `FALSE` nếu khác nhau.
$known_string
là chuỗi đã biết.
$user_string
là chuỗi mà người dùng chuyền vào dùng để so khớp với$known_string
Ví dụ:
$expected = crypt['truongthinhi', '$thisismysalt$'];
$correct = crypt['truongthinhi', '$thisismysalt$'];
$incorrect = crypt['soccer', '$thisismysalt$'];
var_dump[hash_equals[$expected, $correct]]; // bool[true]
echo "
";
var_dump[hash_equals[$expected, $incorrect]]; // bool[false]
source:
//www.php.net/manual/en/function.hash.php