Java에서 MD5 해시 생성

  1. Java의 MD5 해싱 알고리즘
  2. Java에서 MD5 해시 사용
  3. Java의 대용량 데이터에 MD5 해시 사용
  4. 결론
Java에서 MD5 해시 생성

이 기사에서는 데이터 해시를 생성하는 MD5 알고리즘과 Java에서 데이터의 MD5 해시를 생성하는 방법을 이해합니다.

Java의 MD5 해싱 알고리즘

MD5 해싱 알고리즘은 암호화 해싱 알고리즘으로 데이터 파일의 체크섬으로 많이 사용된다. 이 알고리즘을 사용하여 데이터의 128비트 암호화 해시를 생성할 수 있습니다.

MD5 해싱 알고리즘은 최신 보안 해싱 알고리즘보다 훨씬 빠르기 때문에 널리 사용됩니다.

Java에서 MD5 해시 사용

Java는 파일 전송 및 서버 측 프로그래밍에 널리 사용됩니다. MD5 해시를 생성하는 라이브러리를 찾는 것은 놀라운 일이 아닙니다. Java는 Java의 'security' 패키지에 있는 MessageDigestSpi의 하위 클래스인 MessageDigest 클래스를 제공합니다.

Java에서 MD5 해시를 생성하려면

  • Java 보안 패키지에서 MessageDisgest 클래스를 가져옵니다.
  • 메시지 다이제스트를 가져오기 전에 데이터를 바이트 스트림으로 변환합니다.
  • 그런 다음 getInstance() 메서드를 호출하여 MD5 해싱 알고리즘의 인스턴스를 만듭니다.

    예시 :

    public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException
    
  • MD5 해시를 얻으려는 데이터를 전달하여 digest() 메서드를 호출합니다.

    예시:

    public byte[] digest(byte[] input)
    
  • 메시지 다이제스트를 바이트 배열에 바이트 스트림으로 저장합니다.
  • 마지막으로 메시지 다이제스트를 바이트에서 문자열로 변환합니다.

Java의 작업 코드를 사용하여 위의 접근 방식을 이해합시다.

코드 조각:

import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;

public class md5Test {
  public static void main(String[] args) {
    String str;
    Scanner scan = new Scanner(System.in);
    str = scan.nextLine();
    System.out.println("Your input: " + str);

    byte[] msg = str.getBytes();

    byte[] hash = null;
    try {
      MessageDigest md = MessageDigest.getInstance("MD5");
      hash = md.digest(msg);
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    }
    StringBuilder strBuilder = new StringBuilder();
    for (byte b : hash) {
      strBuilder.append(String.format("%02x", b));
    }
    String strHash = strBuilder.toString();
    System.out.println("The MD5 hash: " + strHash);
  }
}

출력:

Hello, Peter
Your input: Hello, Peter
The MD5 hash: 945062a2fee23e0901b37fcb5cd952c9

Java is so awesome.
Your input: Java is so awesome.
The MD5 hash: 601835019da217140c2755c919ee18c2

Java의 대용량 데이터에 MD5 해시 사용

데이터가 크거나 데이터를 청크로 읽는 경우 update() 메소드를 사용하십시오.

예시:

public void update(byte[] input)

데이터 청크를 읽을 때마다 현재 청크를 전달하여 update() 메서드를 호출해야 합니다. 모든 데이터를 읽은 후 digest() 메서드의 다음 다형성 형식을 사용합니다.

예시:

public byte[] digest() // It means you will pass no parameter to the `digest()` method.

데모를 위해 다음 예제를 볼 수 있습니다.

코드 조각:

import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;

public class md5Test {
  public static void main(String[] args) {
    String str;
    Scanner scan = new Scanner(System.in);
    System.out.println("Enter message:");
    str = scan.nextLine();
    System.out.println("Your input: " + str);

    byte[] hash = null;

    MessageDigest md = null;

    try {
      md = MessageDigest.getInstance("MD5");
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    }

    md.update(str.getBytes());

    System.out.println("Enter message:");
    str = scan.nextLine();

    md.update(str.getBytes());
    hash = md.digest();

    StringBuilder strBuilder = new StringBuilder();
    for (byte b : hash) {
      strBuilder.append(String.format("%02x", b));
    }
    String strHash = strBuilder.toString();
    System.out.println("The MD5 hash: " + strHash);
  }
}

출력:

Enter message:
Hello Java
Your input: Hello Java
Enter message:
I'm Peter
The MD5 hash: 9008f99fa602a036ce0c7a6784b240b1

결론

데이터를 공유하는 동안 보장해야 하는 기본적인 보안 조치 중 하나는 데이터 무결성을 보장하는 것입니다. 따라서 무결성을 보장하기 위해 수신자와 공유하는 데이터의 체크섬을 생성하는 해싱 알고리즘이 필요합니다.

MessageDigest 클래스를 사용하여 MD5 체크섬을 생성하는 방법과 해당 메서드를 이해했습니다. 데이터를 청크로 읽을 때 잘못된 결과가 나오지 않도록 주의하는 것이 가장 좋습니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다