>  기사  >  Java  >  Java에서 세 가지 대칭 암호화 알고리즘 DES/3DES/AES 구현

Java에서 세 가지 대칭 암호화 알고리즘 DES/3DES/AES 구현

巴扎黑
巴扎黑원래의
2017-04-30 10:07:281421검색

다음과 같은 두 문장이 있습니다.

1) 알고리즘과 데이터 구조는 프로그래밍의 중요한 부분입니다. 알고리즘과 데이터 구조를 잃으면 모든 것을 잃게 됩니다.

2) 프로그래밍은 알고리즘이자 데이터 구조입니다. 알고리즘과 데이터 구조는 프로그래밍의 영혼입니다.

제가 말한 것은 아니고 수많은 프로그래머들이 정리한 내용입니다. 매우 실용적이고 통찰력이 있습니다. 장기적으로 지속 가능한 발전을 원한다면 오늘은 암호화 알고리즘에 대해 더 많이 공부해야 합니다. 암호화 알고리즘, 여기서는 대칭 암호화 알고리즘의 프로그래밍과 사용을 가르칩니다. 여기에는 DES, 3DES 및 AES의 세 가지 대칭 암호화 알고리즘 프로그래밍 및 사용이 포함되어 있으며 유용한 정보가 가득합니다.

1. 대칭 암호화 알고리즘

대칭 암호화 알고리즘은 오늘날 가장 널리 사용되고 가장 자주 사용되는 암호화 알고리즘입니다. 소프트웨어 산업뿐만 아니라 하드웨어 산업에서도 널리 사용됩니다. 보안 요구 사항이 다양한 인프라와 관련될 때마다 대칭 암호화 알고리즘에 우선 순위가 부여됩니다.

대칭 암호화 알고리즘의 암호화 키와 암호 해독 키는 동일합니다. 대부분의 대칭 암호화 알고리즘의 경우 암호화 및 암호 해독 프로세스가 반대입니다.

(1) 암복호화 통신 모델

Java에서 세 가지 대칭 암호화 알고리즘 DES/3DES/AES 구현

(2) 특징 : 개방형 알고리즘, 적은 계산량, 빠른 암호화 속도, 높은 암호화 효율성

(3) 약점 : 양측이 동일한 키를 사용하므로 보안이 보장되지 않습니다

대칭 암호에는 스트림 암호와 블록 암호가 포함되지만 현재는 블록 암호가 일반적으로 사용됩니다.

(4) 블록암호 작동 모드

  • 1) ECB: 전자 코드북(가장 일반적으로 사용됨, 각 암호화는 독립적인 암호문 그룹을 생성하며 다른 암호문 그룹에 영향을 미치지 않습니다. 즉, 동일한 평문은 암호화 후 동일한 암호문을 생성합니다)


  • 2) CBC: 암호문 링크(일반적으로 사용됨, 일반 텍스트 암호화가 이전 암호문과 XOR되어야 하기 전에, 즉 동일한 일반 텍스트가 암호화 후 다른 암호문을 생성함)


  • 3) CFB: 암호문 피드백


  • 4) OFB: 출력 피드백


  • 5) CTR : 카운터


이러한 5가지 작업 모드는 파생 계산을 수행할 때 암호화 알고리즘에서 주로 사용됩니다.

6. 블록 암호 채우기 방법

  • 1) NoPadding : 패딩 없음


  • 2) PKCS5패딩:


  • 3) ISO10126패딩:


7. 일반적으로 사용되는 대칭 비밀번호:

  • 1) DES(데이터 암호화 표준, 데이터 암호화 표준)


  • 2) 3DES(Triple DES, DESede, Triple 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) 키 생성

rree

2) 암호화

아아아아

3) 복호화

아아아아

암호화와 복호화에 대해 서로 다른 모드를 설정했다는 것을 알 수 있습니다.

3.3DES 알고리즘

1.3DES: 키 길이를 112비트 또는 168비트로 늘리고 반복 횟수를 늘려 보안을 강화합니다

2. 단점: 느린 처리 ​​속도, 긴 키 계산 시간, 낮은 암호화 효율성

3.Java 구현

1) 키 생성

rree

​2) 3DES 암호화

아아아아

​3) 3DES 복호화

아아아아

4.AES 알고리즘(권장)

1.AES: DES 알고리즘에 대해 알려진 모든 공격을 효과적으로 저항할 수 있는 고급 데이터 암호화 표준

2. 특징: 짧은 키 설정 시간, 우수한 감도, 낮은 메모리 요구 사항, 높은 보안

3.Java 구현

1) 키 생성

rree

2) AES 암호화

아아아아

​3) AES 복호화

아아아아

사용 편의성을 위해 세 가지 알고리즘 DES/3DES/AES에 대한 도구 클래스를 작성했습니다. 주소는 https://github.com/smartbetter/Android-UtilsLibrary(새로운 DES/3DES/AES 도구 클래스)입니다.

위 내용은 Java에서 세 가지 대칭 암호화 알고리즘 DES/3DES/AES 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.