이것을 말하는 두 문장이 있습니다.
1) 알고리즘 및 데이터 구조는 프로그래밍의 중요한 부분입니다. 알고리즘과 데이터 구조를 잃으면 모든 것을 잃게됩니다.
2) 프로그래밍은 알고리즘 및 데이터 구조이며 알고리즘 및 데이터 구조는 프로그래밍의 영혼입니다.
이것은 내가 말한 것이 아니라 수많은 프로그래머에 의해 요약되었습니다. 매우 현실적이고 통찰력이 있습니다. 오랫동안 지속적으로 개발하려면 더 많은 알고리즘을 연구해야합니다. 오늘 저는 암호화 알고리즘의 대칭 암호화 알고리즘에 대해 알려 드리겠습니다. 여기서는 대칭 암호화 알고리즘의 프로그래밍 및 사용을 가르쳐 줄 것입니다. 여기에는 DES, 3DES 및 AES의 세 가지 대칭 암호화 알고리즘이 포함되어 있으며 실용적인 정보로 가득합니다.
1. 대칭 비밀번호 알고리즘
대칭 암호화 알고리즘은 오늘날 가장 널리 사용되고 가장 많이 사용되는 암호화 알고리즘입니다. 소프트웨어 산업에서도 사용될뿐만 아니라 하드웨어 산업에서도 인기가 있습니다. 모든 종류의 인프라는 보안 요구가 필요할 때마다 대칭 암호화 알고리즘에 우선 순위를 부여합니다.
대칭 암호화 알고리즘의 암호화 키 및 암호 해독 키는 동일합니다. 대부분의 대칭 암호화 알고리즘의 경우 암호화 및 암호 해독 프로세스가 반비례합니다.
(1) 통신 모델을 암호화 및 해독합니다
(2) 특징 : 개방형 알고리즘, 작은 계산량, 빠른 암호화 속도, 높은 암호화 효율
(3) 약점 : 양 당사자는 동일한 키를 사용하며 보안이 보장되지 않습니다.
대칭 비밀번호에는 두 가지 유형이 있습니다 : 스트림 암호와 패킷 비밀번호이지만 이제는 블록 암호가 일반적으로 사용됩니다.
(4) 비밀번호 작업 모드를 차단합니다
1) ECB : Electronic Cipherbook (가장 일반적으로 사용되는 각 암호화는 독립적 인 암호 텍스트 패킷을 생성하며 다른 암호 텍스트 패킷에 영향을 미치지 않습니다. 즉, 동일한 일반 텍스트가 암호화 후에 생성됩니다).
2) CBC : 암호 텍스트 링크 (일반적으로 사용됩니다. 일반 텍스트 암호화 전에 이전 암호 텍스트로 XOR 작동을 수행해야합니다.
일반적으로 사용되는이 두 가지 작업 모드 외에도 다음과 같습니다.
3) CFB : 비밀번호 피드백
4) OFB : 출력 피드백
5) CTR : 카운터
이 5 가지 작업 모드는 주로 파생 계산을 수행 할 때 암호화의 알고리즘에 의해 적용됩니다.
6. 블록 암호를 채우는 방법
1) Nopadding : 채우기 없음
2) pkcs5padding :
3) ISO10126Padding :
7. 일반적으로 사용되는 대칭 비밀번호 :
1) DES (데이터 암호화 표준, 데이터 암호화 표준)
2) 3DES (Triple des, Desede, Triple des 암호화 알고리즘)
3) AES (고급 암호화 표준, 고급 데이터 암호화 표준, AES 알고리즘은 DE에 대한 공격 알고리즘을 효과적으로 저항 할 수 있음)
먼저이 세 가지 알고리즘을 간단하게 비교해 보겠습니다.
| 연산 | 키 길이 | 기본 키 길이 | 작업 모드 | 충전 방법 |
|---|---|---|---|---|
| 데스 | 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); // 키 생성기 비밀 비밀 스크리 키 = keygen.generatekey (); // 키 바이트 생성 [] key = inverkey.getEncoded (); // key byte array
2) 암호화
Secretkey SecretKey = New SecretKeyspec (키, "DES"); // 키 암호 CIPHER.GETINSTANCE ( "DES"); // 암호화는 암호화 또는 해독 된 작업 클래스 CIPHER.init (cipher.encrypt_mode, SecretKey); // EncRyption Mode Byte를 초기화합니다. cipher.dofinal (data); // 데이터를 암호화합니다
3) 암호 해독
Secretkey SecretKey = New SecretKeyspec (키, "DES"); // 키 암호 CIPHER.GETINSTANCE ( "DES"); // 암호화는 암호화 또는 해독제 작업 클래스 cipher.init (cipher.decrypt_mode, SecretKey); // decrypts mode [] cipherte를 초기화합니다. cipher.dofinal (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 (); // 키 바이트 생성 [] key = secretkey.getencoded (); // 키 바이트 배열 생성
2) 3DES 암호화
Secretkey SecretKey = New SecretKeyspec (Key, "Desede"); // 키 암호 Cipher = Cipher.getInstance ( "Desede"); // Cipher는 노동 계급 Cipher.init의 암호화 또는 암호 해독을 완료합니다 (cipher.encrypt_mode, secretkey); // decrypts mode byte = decrypts byte. cipher.dofinal (data); // 데이터를 암호화합니다
3) 3DES 암호 해독
Secretkey SecretKey = New SecretKeyspec (키, "Desede"); // 키 암호 CIPHER = CIPHER.getInstance ( "Desede"); // Cipher는 노동 클래스 Cipher.init의 암호화 또는 암호 해독을 완료합니다 (cipher.decrypt_mode, secretkey); // decrypts, decrypts sile the [] cipher = cipher.dofinal (data); // 데이터를 해독합니다
4. AES 알고리즘 (권장)
1.AES : DES 알고리즘에 대한 알려진 모든 공격에 효과적으로 저항 할 수있는 고급 데이터 암호화 표준
2. 특징 : 짧은 키 설립 시간, 좋은 감도, 낮은 메모리 요구 사항 및 높은 보안
3. Java 구현
1) 키를 생성하십시오
KeyGenerator keyGen = keyGenerator.getInstance ( "aes"); // 키 생성기 keygen.init (128); // 기본값 128, 정책 권한을 얻지 못한 후에는 192 또는 256Secretkey secretkey = keygen.generatekey (); // 키 바이트 생성 [] key = secretkey.getEncoded (); // 키 바이트 배열이 될 수 있습니다.
2) AES 암호화
SecretKey SecretKey = New SecretKeyspec (키, "AES"); // 복구 키 암호 CIPHER.GETINSTANCE ( "AES"); // CIPHER CIPHER.init (Cipher.encrypt_mode, SecretKey)의 암호화 또는 암호 해독을 완료합니다. cipher.dofinal (data); // 데이터를 암호화합니다
3) AES 암호 해독
Secretkey SecretKey = New SecretKeyspec (키, "AES"); // 키 암호 CIPHER.GETINSTANCE ( "AES"); // 암호화가 실무 클래스 Cipher.init의 암호화 또는 암호 해독을 완료합니다 (cipher.decrypt_mode, secretkey); // decrypts, decrypts giette = cipher =. cipher.dofinal (data); // 데이터를 해독합니다
사용하기 위해 DES/3DES/AES 알고리즘에 대한 도구 클래스를 작성했습니다. 주소 : 다운로드 주소 (New DES/3DES/AES 도구 클래스).
이 시점에서 DES/3DES/AE의 3 가지 알고리즘은 모두 대칭 암호화를 구현하기 위해 수행됩니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.