Java 암호화-MAC 생성
맥 (M에세이 지 A인증 Code) 알고리즘은 메시지 인증을 제공하는 대칭 키 암호화 기술입니다. MAC 프로세스를 설정하기 위해 발신자와 수신자는 대칭 키 K를 공유합니다.
기본적으로 MAC은 메시지 인증을 보장하기 위해 메시지와 함께 전송되는 기본 메시지에서 생성 된 암호화 된 체크섬입니다.
인증을 위해 MAC을 사용하는 프로세스는 다음 그림에 설명되어 있습니다.
자바에서 Mac 의 클래스 javax.crypto패키지는 메시지 인증 코드의 기능을 제공합니다. 이 클래스를 사용하여 메시지 인증 코드를 생성하려면 아래 단계를 따르십시오.
1 단계 : KeyGenerator 개체 만들기
그만큼 KeyGenerator 수업 제공 getInstance() 필요한 키 생성 알고리즘을 나타내는 String 변수를 받아들이고 KeyGenerator 비밀 키를 생성하는 객체.
창조하다 KeyGenerator 개체를 사용하여 getInstance() 방법은 아래와 같습니다.
//Creating a KeyGenerator object
KeyGenerator keyGen = KeyGenerator.getInstance("DES");
2 단계 : SecureRandom 개체 만들기
그만큼 SecureRandom 의 클래스 java.Security패키지는 Java에서 난수를 생성하는 데 사용되는 강력한 난수 생성기를 제공합니다. 아래와 같이이 클래스를 인스턴스화합니다.
//Creating a SecureRandom object
SecureRandom secRandom = new SecureRandom();
3 단계 : KeyGenerator 초기화
그만큼 KeyGenerator 클래스는 init() 이 방법은 SecureRandom 개체 및 현재 초기화 KeyGenerator.
이 메서드를 사용하여 이전 단계에서 만든 KeyGenerator 개체를 초기화합니다.
//Initializing the KeyGenerator
keyGen.init(secRandom);
4 단계 : 키 생성
다음을 사용하여 키 생성 generateKey() 의 방법 KeyGenerator 아래와 같이 클래스.
//Creating/Generating a key
Key key = keyGen.generateKey();
5 단계 : Mac 개체 초기화
그만큼 init() Mac 클래스의 메서드는 Key 객체를 받아들이고 주어진 키를 사용하여 현재 Mac 객체를 초기화합니다.
//Initializing the Mac object
mac.init(key);
6 단계 : Mac 작업 완료
그만큼 doFinal()Mac 클래스의 메서드는 Mac 작업을 완료하는 데 사용됩니다. 필요한 데이터를 바이트 배열 형식으로이 메서드에 전달하고 아래와 같이 작업을 마무리합니다.
//Computing the Mac
String msg = new String("Hi how are you");
byte[] bytes = msg.getBytes();
byte[] macResult = mac.doFinal(bytes);
예
다음 예제는 JCA를 사용하여 메시지 인증 코드 (MAC)를 생성하는 방법을 보여줍니다. 여기에서 "Hi how are you"라는 간단한 메시지를 받고 해당 메시지에 대한 Mac을 생성합니다.
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
public class MacSample {
public static void main(String args[]) throws Exception{
//Creating a KeyGenerator object
KeyGenerator keyGen = KeyGenerator.getInstance("DES");
//Creating a SecureRandom object
SecureRandom secRandom = new SecureRandom();
//Initializing the KeyGenerator
keyGen.init(secRandom);
//Creating/Generating a key
Key key = keyGen.generateKey();
//Creating a Mac object
Mac mac = Mac.getInstance("HmacSHA256");
//Initializing the Mac object
mac.init(key);
//Computing the Mac
String msg = new String("Hi how are you");
byte[] bytes = msg.getBytes();
byte[] macResult = mac.doFinal(bytes);
System.out.println("Mac result:");
System.out.println(new String(macResult));
}
}
산출
위의 프로그램은 다음 출력을 생성합니다-
Mac result:
HÖ„^ǃÎ_Utbh…?š_üzØSSÜh_ž_œa0ŽV?