Nội dung bài viết
#

Thuật toán SHA-1 là gì? Ví dụ cụ thể về thuật toán SHA-1

Thuật toán SHA-1 được triển khai hỗ trợ mã hóa các giá trị của dữ liệu. Cụ thể thuật toán này là gì? Hay cách triển khai nó diễn ra như thế nào? Hãy cùng BKHOST theo dõi bài viết sau đây để tìm ra câu trả lời.

Thuật toán SHA-1 là gì?

Thuat toan SHA-1 la gi?

SHA-1 viết tắt của Secure Hash Algorithm 1 là một thuật toán sử dụng hàm Cryptographic Hash để thu thập đầu vào và cho ra các giá trị Hash 160 bit (20byte). Trong đó, giá trị Hash này được gọi là Message Digest, nó bao gồm một chuỗi các số thập lục phân dài 40 chữ số.

Thuật toán SHA-1 được xem là U.S. Federal Information Processing Standard do cơ quan an ninh Quốc gia Hoa Kỳ phát triển. Tuy nhiên, kể từ năm 2005 đến nay thì thuật toán này được xem là phương pháp không có tính an toàn cao. Do đó, hàng loạt các trình duyệt lớn như Microsoft, Google, Apple và Mozilla đã ngừng hỗ trợ SHA-1 bằng cách từ chối các chứng chỉ SSL của nó.

Bạn có thể sử dụng lớp MessageDigest Class để tính toán các giá trị Cryptographic Hashing trong gói java.security. Lớp hỗ trợ này cung cấp Cryptographic Hashing để tìm các giá trị Hash của một văn bản. Chẳng hạn như MD2, MD5, SHA-1, SHA-224, SHA-256, SHA-384 và SHA-512.

Ví dụ về thuật toán SH1-1

SHA-1 được triển khai trong Static Method được gọi là getInstance (). Sau đó, thuật toán sẽ tính và trả về giá trị của Message Digest dưới dạng Byte Array. Lớp BigInteger có nhiệm vụ chuyển đổi Byte Array này thành Signum Representation của nó. Trong đó, Representation này cũng được chuyển đổi dưới dạng thập lục phân để có MessageDigest. Chẳng hạn như sau:

Input: hello world – Output: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
Input: BKHOST – Output: addf120b430021c36c232c99ef8d926aea2acd6b

Chương trình dưới đây cho thấy việc triển khai hàm băm SHA-1 trong Java:

// Java program to calculate SHA-1 hash value

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class GFG {
public static String encryptThisString(String input)
{
try {
// getInstance() method is called with algorithm SHA-1
MessageDigest md = MessageDigest.getInstance("SHA-1");

// digest() method is called
// to calculate message digest of the input string
// returned as array of byte
byte[] messageDigest = md.digest(input.getBytes());

// Convert byte array into signum representation
BigInteger no = new BigInteger(1, messageDigest);

// Convert message digest into hex value
String hashtext = no.toString(16);

// Add preceding 0s to make it 32 bit
while (hashtext.length() < 32) {
hashtext = "0" + hashtext;
}

// return the HashText
return hashtext;
}

// For specifying wrong message digest algorithms
catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}

// Driver code
public static void main(String args[]) throws
NoSuchAlgorithmException
{

System.out.println("HashCode Generated by SHA-1 for: ");

String s1 = "BKHOST";
System.out.println("\n" + s1 + " : " + encryptThisString(s1));

String s2 = "hello world";
System.out.println("\n" + s2 + " : " + encryptThisString(s2));
}
}

Output:

HashCode Generated by SHA-1 for:

BKHOST: addf120b430021c36c232c99ef8d926aea2acd6b

hello world : 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

Tổng kết

Hy vọng thông qua bài chia sẻ trên đây bạn đọc đã hiểu hơn về thuật toán SHA-1. Bạn hãy thử nghiên cứu thuật toán này để biết cách sử dụng một cách hiệu quả nhé.

Nếu còn gặp bất cứ vướng mắc gì về nội dung bài viết trên, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

Mua tên miền .VN tại BKHOST

Giá chỉ từ 750k/năm. Kiểm tra tên miền .VN đẹp và đăng ký ngay hôm nay!

tên miền vn

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger
Góp ý
Bạn đã hài lòng với trải nghiệm trên Bkhost.vn?
Cảm ơn lượt bình chọn của bạn, Chúc bạn 1 ngày tốt lành !