자바 의 AES 와 DES 암호 화
기본 단 방향 암호 화 알고리즘:
。
2.BASE 64 암호 화:
3.대칭 암호 화:
DES 64 64 , 64 。
/**
* 2019-05-31 by wx AES demo
* */
public class AESTest {
/*
*
* 1.
* 2. ecnodeRules
* 3.
* 4.
* 5.
* 6.
*/
public static String encrypt(String pwd ,String content){
try {
// AES key
KeyGenerator kgen = KeyGenerator.getInstance("AES");
// 128 key
// ,SecureRandom ,pwd.getBytes() , , , pwd
kgen.init(128,new SecureRandom(pwd.getBytes()));
//
SecretKey secretKey = kgen.generateKey();//
byte [] enCodeFormat = secretKey.getEncoded();// , , null
// AES
SecretKeySpec key = new SecretKeySpec(enCodeFormat,"AES");
//
Cipher cipher = Cipher.getInstance("AES");
//
cipher.init(Cipher.ENCRYPT_MODE,key);
// ( utf-8)
byte[] byteContent = content.getBytes("utf-8");
//
byte[] result =cipher.doFinal(byteContent);
//
String s = new String (new BASE64Encoder().encode(result));
return s;
}catch (NoSuchPaddingException e) {
e.printStackTrace();
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}catch (UnsupportedEncodingException e) {
e.printStackTrace();
}catch (InvalidKeyException e) {
e.printStackTrace();
}catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
/*
*
* :
* 1. 1-4
* 2. byte[]
* 3.
*/
public static String deencrty(String pwd,String content){
try {
//1. , AES ,
KeyGenerator kgen = KeyGenerator.getInstance("AES");
//2. pwd
// 128 ,
kgen.init(128,new SecureRandom(pwd.getBytes()));
//3.
SecretKey ori_key =kgen.generateKey();
//4.
byte[] raw =ori_key.getEncoded();
//5. AES
SecretKey key =new SecretKeySpec(raw ,"AES");
//6. AES
Cipher cipher = Cipher.getInstance("AES");
//7. , , key
cipher.init(Cipher.DECRYPT_MODE,key);
//8.
byte[] byte_content = new BASE64Decoder().decodeBuffer(content);
//
byte[] result = cipher.doFinal(byte_content);
String re = new String (result,"utf-8");
return re;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}catch (NoSuchPaddingException e) {
e.printStackTrace();
}catch (InvalidKeyException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
public static void main (String[] args){
Scanner scanner = new Scanner(System.in);
//
System.out.println(" AES , :");
String key = scanner.next();
System.out.println(" :");
String content = scanner.next();
String re = encrypt(key,content);
System.out.println(" key :"+ re);
//
System.out.println(" AES , : ");
key = scanner.next();
System.out.println(" :");
content = scanner.next();
String le= deencrty(key,content);
System.out.println(" key :"+le);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.