ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 Hash 알고리즘을이용해서 암호화 하기
    개발일지/Java 2019. 5. 30. 18:53
    반응형

    오늘은 자바 해시 알고리즘에 대해서 공부했는데 그것을 간단하게 티스토리에 적어볼려고합니다.

    해시알고리즘 구성

    해시 알고리즘은 위와같이 평문을 입력했을때 암호화 함수를 거치고 암호문을 출력하는데

    이때 평문에 글자가 하나만 달라져도 완전히 다른값들이 출력됩니다. 

    이것은 해시 함수가 가지는 특성입니다.

     

    해시함수에 종류에는 

    ¤ Md5

    ¤ Sha1

    ¤ Sha256

    ¤ Sha384

    ¤ Sha512

    등이 있으며 

    이클립스에서 한번 해시 함수를 사용해보겟습니다.

    import java.security.MessageDigest;
    
    public class HashTest {
    
    	public static void main(String[] args)  {
    		try {
    			String inputText = "Hello world!";
    			String inputText2 = "Hello wold!!";
    			MessageDigest md = MessageDigest.getInstance("SHA-512"); 
    			md.update(inputText.getBytes()); 
    			
    			byte[] hashValue = md.digest(); 
    			md.update(inputText2.getBytes());
    			
    			byte[] hashValue2 = md.digest();  
    			System.out.println("입력메세지 : "+ inputText);  
    			System.out.println("입력메세지 : "+ inputText2);  
    			System.out.println("MD5 해시값 : "+ bytesToHex(hashValue)); 
    			System.out.println("MD5 해시값 : "+ bytesToHex(hashValue2));  
    			
    			System.out.println("두 해시값이 같은지 확인: " + MessageDigest.isEqual(hashValue, hashValue2)); //해시값이 같은지 비교 
    			System.out.println("두 해시값이 같은지 확인: " + (hashValue.equals(hashValue2))); //해시값이 같은지 비교 
    			
    		}catch(Exception e) {
    				e.printStackTrace();
    			}
    		}
    	
    	private static String bytesToHex(byte[] hash) {
    		StringBuilder sb = new StringBuilder();
    		for(byte b : hash) {
    			sb.append(String.format("%02x", b)); // b에 데이터값을 16진수 형으로 표기함  
    		}
    		return sb.toString();
    
    	}
    
    }
      (adsbygoogle = window.adsbygoogle || []).push({
        google_ad_client: "ca-pub-6957009426981597",
        enable_page_level_ads: true
      });
    

     

    암호 알고리즘을 짜는게아니라 이미 만들어져있는 자바 java.security.MessageDigest 에서 import 해서가져와서 함수만 선언해주면 됩니다 

    MessageDigest md = MessageDigest.getInstance("SHA-512"); 
    			md.update(inputText.getBytes()); 

    이런식으로 선언하면 MessageDigest 라는 함수에서 SHA-512 함수를 가져올수있습니다 .

    다른 해시 함수를 가져올때도 .getIngetInstance(함수종류) 이런식으로 쉽게 가져올수있습니다.

    그리고 md.update 함수를 이용해서 inpuText에 내용을 업데이트를 할 수 있습니다. 말그대로 업데이트해줍니다. 실행결과는 

    이런식으로 나옵니다. 이상 해시함수에 대해서 간단히 설명해보았습니다. 

    반응형

    '개발일지 > Java' 카테고리의 다른 글

    [Java] jackson ObjectMapper  (0) 2024.01.30

    댓글

Designed by Tistory.