자바 대칭 암호 화 몇 가지 알고리즘 각각 실현

자바 대칭 암호 화 는 DES/3DES/AES 라 는 세 가지 알고리즘 을 각각 사용 하여 이 루어 집 니 다.
두 마디 는 이렇게 말 했다.
1)알고리즘 과 데이터 구 조 는 프로 그래 밍 의 중요 한 부분 입 니 다.알고리즘 과 데이터 구 조 를 잃 으 면 모든 것 을 잃 게 됩 니 다.
2)프로 그래 밍 은 알고리즘 과 데이터 구조 이 고 알고리즘 과 데이터 구 조 는 프로 그래 밍 의 영혼 이다.
주의 하 세 요.이것 은 제 가 말 한 것 이 아니 라 수많은 프로그래머 들 이 정리 한 것 입 니 다.말 도 정확 하고 치밀 합 니 다.만약 에 지속 가능 한 발전 을 하려 면 알고리즘 을 많이 연구 하 는 것 이 필요 합 니 다.오늘 은 암호 화 알고리즘 중의 대칭 암호 화 알고리즘 을 말씀 드 리 고 여기 서 대칭 암호 화 알고리즘 의 프로 그래 밍 을 가르쳐 드 리 겠 습 니 다.DES,3DES,AES 세 가지 대칭 암호 화 알고리즘 을 포함 한 프로 그래 밍 을 사용 하여 건어물 이 가득 합 니 다.
1.대칭 암호 화 알고리즘
대칭 암호 화 알고리즘 은 현재 응용 범위 가 가장 넓 고 사용 빈도 가 가장 높 은 암호 화 알고리즘 이다.그것 은 소프트웨어 업계 뿐만 아니 라 하드웨어 업계 에서 도 유행 하고 있다.각종 인 프 라 시설 은 안전 수요 와 관련 된 것 이 라면 대칭 암호 화 알고리즘 을 우선적으로 고려한다.
대칭 암호 산법 의 암호 화 키 는 복호화 키 와 같 으 며,대부분의 대칭 암호 산법 에 대해 복호화 과정 이 서로 거 스 릅 니 다.
(1)복호화 통신 모델

(2)특징:알고리즘 공개,계 산 량 이 적 고 암호 화 속도 가 빠 르 며 암호 화 효율 이 높다.
(3)약점:쌍방 이 같은 키 를 사용 하여 안전성 이 보장 되 지 않 습 니 다.
대칭 암 호 는 스 트림 암호 와 그룹 암호 두 가지 가 있 지만 현재 보편적으로 사용 되 는 것 은 그룹 암호 입 니 다.
(4)그룹 암호 작업 모드
1)ECB:전자 암호 북(가장 많이 사용 되 는 암호 화 는 매번 독립 된 암호 화 그룹 을 만 들 고 다른 암호 화 그룹 에 영향 을 주지 않 습 니 다.즉,같은 명문 암호 화 후에 같은 암호 화 를 만 듭 니 다)
2)CBC:비밀문서 링크(자주 사용 되 는 것,명문 암호 화 전에 앞의 비밀문서 와 다른 연산 을 해 야 한다.즉,같은 명문 암호 화 후에 서로 다른 비밀문서 가 생 긴 다)
이 두 가지 상용 작업 모델 을 제외 하고 다음 과 같다.
3)CFB:비밀문서 피드백
4)OFB:출력 피드백
5)CTR:카운터
이 다섯 가지 작업 모델 은 주로 암호학 에서 알고리즘 이 유도 연산 을 할 때 응용 한 것 이다.
6.그룹 암호 채 우기
1)NoPadding:충전 되 지 않 음
2)PKCS5Padding:
3)ISO10126Padding:
7.대칭 암호 사용:
1)DES(데이터 암호 화 표준,데이터 암호 화 표준)
2)3DES(Triple DES,DESede,삼중 DES 암호 화 알고리즘)
3)AES(Advanced Encryption Standard,고급 데이터 암호 화 표준,AES 알고리즘 은 DES 에 대한 공격 알고리즘 을 효과적으로 거부 할 수 있 음)
먼저 이 세 가지 알고리즘 의 간단 한 대 비 를 살 펴 보 자.
알고리즘
키 길이
기본 키 길이
작업 모드
충전 방식
DES
56
56
ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128
NoPadding、PKCS5Padding、ISO10126Padding
3DES
112、168
168
ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128
NoPadding、PKCS5Padding、ISO10126Padding
AES
128、192、256
128
ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128
NoPadding、PKCS5Padding、ISO10126Padding
다음은 DES/3DES/AES 세 가지 알고리즘 을 어떻게 사용 하여 대칭 암호 화 를 실현 하 는 지 살 펴 보 겠 습 니 다.
2.DES 알고리즘
1.DES:데이터 암호 화 기준 은 대칭 암호 화 알고리즘 분야 의 전형 적 인 알고리즘 입 니 다.
2.특징:키 가 짧 음(56 비트),수명 주기 가 짧 음(해독 되 지 않 음)
3.Java 구현
1)키 생 성

KeyGenerator keyGen = KeyGenerator.getInstance("DES");//     
keyGen.init(56);//        
SecretKey secretKey = keyGen.generateKey();//    
byte[] key = secretKey.getEncoded();//      
2)암호 화

SecretKey secretKey = new SecretKeySpec(key, "DES");//    
Cipher cipher = Cipher.getInstance("DES");//Cipher          
cipher.init(Cipher.ENCRYPT_MODE, secretKey);// Cipher   ,    
byte[] cipherByte = cipher.doFinal(data);//  data
3)복호화

SecretKey secretKey = new SecretKeySpec(key, "DES");//    
Cipher cipher = Cipher.getInstance("DES");//Cipher          
cipher.init(Cipher.DECRYPT_MODE, secretKey);// Cipher   ,    
byte[] cipherByte = cipher.doFinal(data);//  data
우 리 는 암호 화 복호화 가 서로 다른 패턴 을 설정 한 것 일 뿐 이라는 것 을 알 수 있다.
3.3DES 알고리즘
1.3DES:키 길 이 를 112 비트 또는 168 비트 로 늘 리 고 교체 횟수 를 늘 려 안전성 을 향상 시 킵 니 다.
2.단점:처리 속도 가 느 리 고 키 계산 시간 이 길 며 암호 화 효율 이 높 지 않 습 니 다.
3.Java 구현
1)키 생 성

KeyGenerator keyGen = KeyGenerator.getInstance("DESede");//     
keyGen.init(168); //        112 168,   168  
SecretKey secretKey = keyGen.generateKey();//    
byte[] key = secretKey.getEncoded();//      
2)3DES 암호 화

SecretKey secretKey = new SecretKeySpec(key, "DESede");//    
Cipher cipher = Cipher.getInstance("DESede");//Cipher          
cipher.init(Cipher.ENCRYPT_MODE, secretKey);// Cipher   ,    
byte[] cipherByte = cipher.doFinal(data);//  data
3)3DES 복호화

SecretKey secretKey = new SecretKeySpec(key, "DESede");//    
Cipher cipher = Cipher.getInstance("DESede");//Cipher          
cipher.init(Cipher.DECRYPT_MODE, secretKey);// Cipher   ,    
byte[] cipherByte = cipher.doFinal(data);//  data
4.AES 알고리즘(추천)
1.AES:고급 데이터 암호 화 기준 으로 알려 진 DES 알고리즘 에 대한 모든 공격 을 효과적으로 막 을 수 있 습 니 다.
2.특징:키 구축 시간 이 짧 고 민감 성 이 좋 으 며 메모리 수요 가 낮 고 안전성 이 높 습 니 다.
3.Java 구현
1)키 생 성

KeyGenerator keyGen = KeyGenerator.getInstance("AES");//     
keygen.init(128); //  128,          192 256
SecretKey secretKey = keyGen.generateKey();//    
byte[] key = secretKey.getEncoded();//      
2)AES 암호 화

SecretKey secretKey = new SecretKeySpec(key, "AES");//    
Cipher cipher = Cipher.getInstance("AES");//Cipher          
cipher.init(Cipher.ENCRYPT_MODE, secretKey);// Cipher   ,    
byte[] cipherByte = cipher.doFinal(data);//  data
3)AES 복호화

SecretKey secretKey = new SecretKeySpec(key, "AES");//    
Cipher cipher = Cipher.getInstance("AES");//Cipher          
cipher.init(Cipher.DECRYPT_MODE, secretKey);// Cipher   ,    
byte[] cipherByte = cipher.doFinal(data);//  data
편리 하 게 사용 하기 위해 저 는 DES/3DES/AES 세 가지 알고리즘 을 도구 류 로 작 성 했 습 니 다.
주소:http://xiazai.jb51.net/201701/yuanma/Android-UtilsLibrary-master(jb51.net).rar(DES/3DES/AES 도구 류 추가).
여기까지 DES/3DES/AES 세 가지 알고리즘 이 대칭 암호 화 를 실현 하면 끝 납 니 다.
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기