Mã hóa md5 trong java

Trong thực tế,thì việc mã hóa một chuỗi để bảo mật rất quan trọng.Tôi lấy một ví dụ ở đây rằng các bạn thấy với mật khẩu khi chúng ta đăng nhập vào một hệ thống nào đó ví dụ như Facebook ,thì việc phải bảo mật cho mật khẩu người dùng là điều tất yếu,bởi  một trang web hay ứng dụng lập ra mà không bảo mật thì không có ai sử dụng cả. Nên việc mà mã hóa md5 là điều cần thiết với một  lập trình viên.Hôm nay mình sẽ hướng dẫn các bạn cách để tạo ra một class để mã hóa md5 trong java để làm  thư viện sau này sử dụng thì chỉ việc copy gọi phương thức và sử dụng thôi.

Đầu tiên các bạn tạo một class đặt tên : MD5Library.

Sau đó viết một method md5 như mình :

package com.itphutran.demo;

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

public class MD5Library {
	
	public static String md5(String str){
		String result = "";
		MessageDigest digest;
		try {
			digest = MessageDigest.getInstance("MD5");
			digest.update(str.getBytes());
			BigInteger bigInteger = new BigInteger(1,digest.digest());
			result = bigInteger.toString(16);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return result;
	}
	
}

Trong đó :

  •  MessageDigest : là một class ,MessageDigest này cung cấp các ứng dụng các chức năng của một thông điệp tiêu hóa thuật toán, chẳng hạn như SHA-1 hoặc SHA-256 hay MD5.Khi chúng ta mã hóa thì nó sẽ mã hóa một chiều,không thể mã hóa ngược lại,đây là lý do bảo mật cho người sử dụng.
  • getInstance : đây là method để truyền vào chuỗi muốn mã hóa,ví dụ md5.
  • update : update là một method của lớp MessageDigest giúp cập nhật lại chuỗi cần mã hóa.
  • BigInteger BigInteger là một class cung cấp tương tự cho tất cả các nhà khai thác nguyên nguyên thủy của Java, và tất cả các phương pháp có liên quan từ java.lang.Math. BigInteger lớp phân bổ bộ nhớ nhiều như nó cần cho tất cả các bit của dữ liệu và đặc biệt là nó không giới hạn 
  • toString(16)giúp đồng bộ chuỗ i mã hóa md5 trong  mysql.

Bây giờ chúng ta gọi phương thức đã tạo và sử dụng : 

package com.itphutran.demo;

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

public class MD5Library {
	
	public static String md5(String str){
		String result = "";
		MessageDigest digest;
		try {
			digest = MessageDigest.getInstance("MD5");
			digest.update(str.getBytes());
			BigInteger bigInteger = new BigInteger(1,digest.digest());
			result = bigInteger.toString(16);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return result;
	}
	
	public static void main(String[] args) {
		System.out.println(MD5Library.md5("123456"));;
	}
}

Kết quả : 

ma hoa md5 trong java

                             e10adc3949ba59abbe56e057f20f883e

Như các bạn thấy rằng kết quả trả về là một chuỗi đã mã hóa md5,như vậy chúng ta không thể biết được chuỗi vừa nhập vào là gì cả,vì nó mã hóa một chiều nên không thể quay trở về chuỗi ban đầu.Tính bảo mật cho người dùng cao.

Chúc các bạn thực hiện thành công!

 

x