Hướng dẫn dùng php sha256 trong PHP

From RFC 3174 - The US Secure Hash Algorithm 1: "SHA-1 produces a 160-bit output called a message digest. The message digest can then, for example, be input to a signature algorithm which generates or verifies the signature for the message. Signing the message digest rather than the message often improves the efficiency of the process because the message digest is usually much smaller in size than the message. The same hash algorithm must be used by the verifier of a digital signature as was used by the creator of the digital signature."

Cơ quan cấp chứng chỉ (CA) và các nhà sản xuất trình duyệt như Google và Microsoft đang rút hỗ trợ cho SHA1 dưới dạng thuật toán băm dùng để ký chứng chỉ SSL/TLS (để biết thêm thông tin, hãy xem bài đăng trên Diễn đàn CA/Trình duyệt). Do vậy, AWS cũng sẽ ngừng sử dụng SHA1 cho chữ ký số trong chứng chỉ SSL/TLS trước ngày 30 tháng 9 năm 2015 và sẽ nâng cấp lên thuật toán băm SHA256 cho SSL/TLS. Điều này có nghĩa là khách hàng truy cập các trang web AWS thông qua HTTPS (ví dụ: bảng điều khiển AWS, cổng thông tin khách hàng hoặc trang chủ) hoặc truy cập các điểm cuối API AWS, cho dù thông qua trình duyệt hay theo chương trình, sẽ cần đảm bảo là họ đang sử dụng gói chứng chỉ mới nhất trên máy khách.

Cập nhật trình duyệt máy khách

Bạn có thể chỉ cần cập nhật trình duyệt của bạn để cập nhật gói chứng chỉ trong trình duyệt. Hướng dẫn cho các trình duyệt phổ biến nhất có trên trang web của trình duyệt: Chrome, FireFox và Safari. Gói chứng chỉ cho Internet Explorer được quản lý bởi HĐH Windows, nên hãy đảm bảo là bạn cập nhật luôn cả HĐH.

Bạn có thể xem danh sách các trình duyệt phổ biến và phiên bản hỗ trợ SHA2 (nhóm hàm băm bao gồm SHA256) tại đây.

Nhiều khách hàng đã cập nhật trình duyệt của mình và họ sẽ không gặp vấn đề gì khi truy cập điểm cuối AWS sau khi thay đổi này được áp dụng. Các khách hàng chưa cập nhật trình duyệt nên tiến hành cập nhật càng sớm càng tốt. Những khách hàng không chắc chắn mình có đang sử dụng trình duyệt có chứng chỉ mới nhất hay không, có thể điều hướng đến điểm cuối kiểm tra mà AWS đã thiết lập: https://www.amazonsha256.com. Nếu trình duyệt của bạn hỗ trợ SHA256, bạn sẽ thấy một thông báo cho biết đàm phán đã thành công.

Kiểm tra ngôn ngữ lập trình

Nếu bạn truy cập AWS theo chương trình, bạn có thể tải xuống tệp zip chứa tập lệnh kiểm tra cho các ngôn ngữ được hỗ trợ và thực hiện tập lệnh theo hướng dẫn bên dưới. Nếu không có lỗi nào được hiển thị thì có nghĩa rằng phần mềm của bạn tương thích với các chứng chỉ mới của chúng tôi. Nếu không, bạn sẽ cần phải cập nhật các gói chứng chỉ của mình. Đối với các ngôn ngữ khác, bạn sẽ cần viết một lệnh kiểm tra thực hiện HTTPS GET với https://www.amazonsha256.com và xác nhận rằng thiết lập TLS thành công.

Tải xuống tệp zip chứa tập lệnh kiểm tra tại đây.

Java:

Sau khi tải xuống tệp zip và giải nén tập lệnh Java, hãy thực thi tập lệnh bằng cách chạy:

$ javac ShaTest.java

$ java ShaTest

Ruby:

Sau khi tải xuống tệp zip và giải nén tập lệnh Ruby, hãy thực thi tập lệnh bằng cách chạy:

$ ruby shaTest.rb

PHP:

Sau khi tải xuống tệp zip và giải nén tập lệnh PHP, hãy tải xuống bản phát hành phar mới nhất: https://github.com/aws/aws-sdk-php/releases/download/2.8.1/aws.phar và lưu vào trong cùng thư mục với shaTest.php

Thực thi tập lện PHP bằng cách chạy:

$ php shaTest.php

Javascript:

Sau khi tải xuống tệp zip và giải nén tập lệnh, hãy thực thi tập lệnh bằng cách chạy:

$ node shaTest.js

Python:

Sau khi tải xuống tệp zip và giải nén tập lệnh Python, hãy thực thi tập lệnh bằng cách chạy:

$ python shaTest.py

.NET:

Khách hàng .NET trên Windows 2003 trở lên không bị ảnh hưởng với điều kiện là họ có cài đặt các bản cập nhật mới nhất từ Windows Update.

I agree with martinstoeckli,

don't create your own salts unless you really know what you're doing.

By default, it'll use /dev/urandom to create the salt, which is based on noise from device drivers.

And on Windows, it uses CryptGenRandom().

Both have been around for many years, and are considered secure for cryptography (the former probably more than the latter, though).

Don't try to outsmart these defaults by creating something less secure. Anything that is based on rand(), mt_rand(), uniqid(), or variations of these is *not* good.

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:

$str = 'truongthinhi';
echo md5($str); // 3679eb61591196c7fbb4591986a8df89
echo md5($str, false); // 3679eb61591196c7fbb4591986a8df89
7

Trong đó:

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ợ.
2 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àm
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)
0.
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)
6 là chuỗi cần mã hóa.

Ví dụ:

$str = 'truongthinhi';
echo md5($str); // 3679eb61591196c7fbb4591986a8df89
echo md5($str, false); // 3679eb61591196c7fbb4591986a8df89
8

2.8. hash_final

Cú pháp:

$str = 'truongthinhi';
echo md5($str); // 3679eb61591196c7fbb4591986a8df89
echo md5($str, false); // 3679eb61591196c7fbb4591986a8df89
9

Trong đó:

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ợ.
2 sẽ là tài nguyên quy định thuật toán mã hóa.
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ợ.
2 chính là kết quả của hàm
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)
0.
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)
7 là tham số không bắt buộc, giá trị mặc định là
$file = 'testHashFile.txt';
echo md5_file($file, true); //
8.

  • Nếu
    $str = 'truongthinhi';
    echo md5($str); // 3679eb61591196c7fbb4591986a8df89
    echo md5($str, false); // 3679eb61591196c7fbb4591986a8df89
    
    00, hàm
    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)
    
    2 sẽ trả về kết quả là chuỗi thập phân in thường.
  • Nếu
    $str = 'truongthinhi';
    echo md5($str); // 3679eb61591196c7fbb4591986a8df89
    echo md5($str, false); // 3679eb61591196c7fbb4591986a8df89
    
    02, hàm
    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)
    
    2 sẽ trả về kết quả là chuỗi nhị phân.

Ví dụ:

Sử dụng hàm

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)
2 nhận kết quả là chuỗi thập phân in thường:

$str = 'truongthinhi';
echo md5($str, true); // 6y�aY����Y��߉
0

2.9. hash_copy

Cú pháp:

$str = 'truongthinhi';
echo md5($str, true); // 6y�aY����Y��߉
1

Trong đó:

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ợ.
2 là tài nguyền quy định thuật toán mã hóa.
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ợ.
2 là kết quả trả về của hàm
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)
0.