Mã hoá SHA-512 trong Java

Các hàm băm mật mã thuộc họ SHA-1 bao gồm 6 hàm:

  1. SHA-224, với giá trị băm là 224 bit.
  2. SHA-256, với gía trị băm là 256 bit.
  3. SHA-384, với giá trị băm là 384 bit.
  4. SHA-512, với giá trị băm là 512 bit.
  5. SHA-512/224, với giá trị băm là 512 bit.
  6. SHA-512/256, với giá trị băm là 512 bit.

Trong số này, SHA-256 và SHA-512 là các hàm băm được sử dụng phổ biến nhất. SHA-224 và SHA-384 là các phiên bản rút gọn của SHA-256 và SHA-512 tương ứng.

Để sử dụng các hàm băm mật mã trong Java chúng ta có thể sử dụng MessageDigest class thuộc package java.security.

Class MessagDigest cung cấp hàm băm mật mã sau để tìm giá trị băm của một văn bản như sau:

  • MD2
  • MD5
  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512

Các thuật toán này được khởi tạo trong phương thức tĩnh gọi là getInstance (). Sau khi chọn thuật toán, giá trị ban đầu sẽ được băm và trả về một mảng byte. Class BigInteger được sử dụng, để chuyển đổi mảng byte thành BigInteger có dấu, sau đó từ BigInteger chuyển sang dạng Hex để có được định dạng như mong đợi của MessageDigest.

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-512 
            MessageDigest md = MessageDigest.getInstance("SHA-512"); 
  
            byte[] messageDigest = md.digest(input.getBytes()); 
  
            // 
Chuyển đổi mảng byte sang BigInteger
            BigInteger no = new BigInteger(1, messageDigest); 
  
            // Chuyển đổi message digest sang dạng hex 
            String hashtext = no.toString(16); 
  
            // Add preceding 0s to make it 32 bit 
            while (hashtext.length() < 32) { 
                hashtext = "0" + hashtext; 
            } 
  
            // Trả về kết quả
            return hashtext; 
        } 
  
        // Cho các trường hợp xảy ra lỗi
        catch (NoSuchAlgorithmException e) { 
            throw new RuntimeException(e); 
        } 
    } 
  
    // Driver code 
    public static void main(String args[]) throws NoSuchAlgorithmException 
    { 
  
        System.out.println("HashCode Generated by SHA-512 for: "); 
  
        String s1 = "GeeksForGeeks"; 
        System.out.println("\n" + s1 + " : " + encryptThisString(s1)); 
  
        String s2 = "hello world"; 
        System.out.println("\n" + s2 + " : " + encryptThisString(s2)); 
    } 
} 

Output

HashCode Generated by SHA-512 for: 

GeeksForGeeks : acc10c4e0b38617f59e88e49215e2e894afaee5
ec948c2af6f44039f03c9fe47a9210e01d5cd926c142bdc9179c2ad
30f927a8faf69421ff60a5eaddcf8cb9c

hello world : 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee5
11a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cf
d830e81f605dcf7dc5542e93ae9cd76f

Nguồn tham khảo

https://www.geeksforgeeks.org/sha-512-hash-in-java/

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x