Mã hóa là một trong những biện pháp hữu ích nhằm giúp giữ cho dữ liệu an toàn tránh bị hacker đánh cắp thông tin. Nội dung phần hướng dẫn này nhằm giúp tìm hiểu mã hóa MD5 là gì và sử dụng mã hóa dữ liệu MD5 trong Java.
Mã hóa dữ liệu MD5, MD5 viết tắt của cụm từ tiếng Anh Message-Digest Algorithm 5 là một hàm băm mật mã học được sử dụng phổ biến với giá trị Hash dài 128-bit chuẩn Internet RFC 1321.
MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước đó là MD4. Vào năm 1996 người ta phát hiện ra một lỗ hổng trong MD5 nhưng chưa biết phải là lỗi nghiêm trọng hay không, những chuyên gia mã hóa đề nghị sử dụng những giải thuật khác chẳng han như SHA-1.
Ứng dụng của MD5:
- MD5 được sử dụng để mã hóa mật khẩu trong lưu trữ.
- MD5 được sử dụng để kiểm tra tính toàn vẹn của tập tin.
MD5 to Hash a String:
package test; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * * @author TVD */ public class TestMD5 { private String convertHashToString(String text) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] hashInBytes = md.digest(text.getBytes(StandardCharsets.UTF_8)); StringBuilder sb = new StringBuilder(); for (byte b : hashInBytes) { sb.append(String.format("%02x", b)); } return sb.toString(); } public static void main(String[] args) throws NoSuchAlgorithmException { TestMD5 md5 = new TestMD5(); System.out.println(md5.convertHashToString("teamvietdev.com")); } }
Kết quả sau khi chạy đoạn mã ví dụ trên:
ccbc69a6d5c126f38c8dcb47d6c79cd9
MD5 File Checksum:
package test; import java.io.FileInputStream; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * * @author TVD */ public class TestMD5 { private String covertCheckSum(String path) throws NoSuchAlgorithmException { try { MessageDigest md = MessageDigest.getInstance("MD5"); InputStream fis = new FileInputStream(path); byte[] buffer = new byte[1024]; int nread; while ((nread = fis.read(buffer)) != -1) { md.update(buffer, 0, nread); } StringBuilder result = new StringBuilder(); for (byte b : md.digest()) { result.append(String.format("%02x", b)); } return result.toString(); } catch (Exception ex) { ex.toString(); } return null; } public static void main(String[] args) throws NoSuchAlgorithmException { TestMD5 md5 = new TestMD5(); System.out.println(md5.covertCheckSum("D:/TVD/test.pdf")); } }
Kết quả sau khi chạy đoạn mã ví dụ trên:
9a92f94094ef1d8fb56d71e8bd648142
Lời kết: Trong thời gian tới Team Việt Dev sẽ tiếp tục chia sẻ thêm nhiều bài viết về lập trình Java miễn phí đến bạn đọc, các bạn nhớ theo dõi kênh để có được những chia sẻ mới nhất.
(Tác giả: Team Việt Dev)