사용할 클레스
javax.crypto.Cipher
com.sun.org.apache.xerces.internal.impl.dv.util.Base64
java.security.MessageDigest

자질구레한건 빼씀

Cipher 만들기
Cipher cipher = Cipher.getInstance( "AES/CBC/NoPadding" );

AES/CBC/NoPadding 대신 들어갈수 있는것들.

AES/CBC/PKCS5Padding
AES/ECB/NoPadding
AES/ECB/PKCS5Padding
DES/CBC/NoPadding
DES/CBC/PKCS5Padding
DES/ECB/NoPadding
DES/ECB/PKCS5Padding
DESede/CBC/NoPadding
DESede/CBC/PKCS5Padding
DESede/ECB/NoPadding
DESede/ECB/PKCS5Padding
RSA/ECB/PKCS1Padding
RSA/ECB/OAEPPadding

보면 알겠지만
암호화알고리즘/블록운영방법/패딩방법 순서임

초기화
cipher.init(Cipher.ENCRYPT_MODE, key)
혹은
cipher.init(Cipher.DECRYPT_MODE, key);
보면 알겠지만 위에껀 암호화, 밑에껀 복호화,
key 는 키
Key 만들기
Key key = new SecretKeySpec("키로 사용할 문자열이다".getBytes(), 0, keysize, "AES");
키로 사용할 문자열은 키보다 길어야된다
더 좋은 방법이 있지만 안가르쳐줄래

마지막 "AES"에 들어갈수 있는건 안말해도 알겠지만

AES, DES, DESede, RSA

암호화하기
byte result[] = cipher.doFinal("이거슨 평문".getBytes());
인자는 항상 byte 배열임 그러니까 getBytes()

복호화 하기
byte cryptogram[]=암호문;
String result = new String( cipher.doFinal(cryptogram) );

해시 하기
MessageDigest hash = MessageDigest.getInstance("MD5");
MD5 대신 넣을수 있는거
MD5, MD2, SHA-1, SHA-256, SHA-384, SHA-512 등등

byte[] result=hash.digest(해시할꺼);
해시도 항상 byte 배열로 넣어야한다.

BASE64
인코딩
String base64=Base64.encode(인코딩할꺼);
인코딩 할꺼도 byte 배열이다

디코딩
byte[] base64=Base64.decode(인코딩된거);
혹시나 해서 말하지만 인코딩 된거는 문자열임

http://docs.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html
참고


완성 코드


이클립스 프로젝트니까 알아서 잘보세영
만들다 만것도 있지만 암호화, 복호화는 잘댐

'Programming > Java' 카테고리의 다른 글

"".equals ?  (0) 2011.12.21
초간단 원형 링크 리스트  (0) 2011.11.23
java 7 의 달라진점 몇가지  (0) 2011.09.26
JAVA 로 System Information 알아내기  (0) 2011.08.23
JTable 해더가 안나올때  (0) 2011.07.13
Posted by 동적할당
: