Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

Blowfish 알고리즘의 데이터 암호화 및 암호 해독이란 무엇입니까?

<시간/>

Blowfish는 1993년 12월 Brute Schneier가 발명한 대칭 블록 암호 알고리즘입니다. Blowfish 알고리즘에는 몇 가지 장점이 있습니다. 하드웨어 구현에 적용 가능하고 효율적이며 라이센스가 필요하지 않습니다. Blowfish 알고리즘의 기본 연산자에는 테이블 조회, 추가 및 XOR이 포함됩니다. 테이블에는 4개의 S-박스와 1개의 P-어레이가 있습니다.

Blowfish는 Feistel 라운드에 의존하는 암호이며, 사용된 F-함수의 설계는 소프트웨어에서 더 높은 속도와 효율성으로 동일한 보안을 지원하기 위해 DES에서 사용되는 원칙의 단순화에 해당합니다.

Blowfish는 32~448비트(14바이트)의 가변 길이 키가 필요한 64비트 대칭 블록 암호입니다. 알고리즘은 64비트의 일반 텍스트를 64비트의 암호문으로 효과적이고 안전하게 암호화하도록 생성되었습니다.

알고리즘을 위해 선택된 작업은 테이블 조회, 모듈러스, 더하기 및 비트별 배타적 또는 32비트 프로세서에서 정보를 암호화 및 해독하는 데 필요한 시간을 최소화하기 위한 것입니다.

DES와 마찬가지로 Blowfish에는 암호화 및 암호 해독을 위한 16개의 라운드 Feistel 네트워크가 포함되어 있습니다. 그러나 Blowfish의 모든 라운드에서 오른쪽 32비트만 변경하여 다음 라운드의 왼쪽 32비트로 발전하는 DES와 달리 왼쪽 및 오른쪽 32비트 데이터가 변경됩니다.

Blowfish에는 F 함수에 의해 변경되기 전에 왼쪽 32비트에서 구현되거나 다음 라운드에서 오른쪽 32비트로 전파되는 비트별 배타적 논리합 연산이 포함됩니다.

Blowfish에는 16 라운드 후에 구현될 두 개의 배타적 논리합 연산과 스왑 연산도 포함됩니다. 이 연산은 DES에서 구현한 순열 함수와 다릅니다.

암호화 프로세스 − 정보 이미지를 평문으로 하는 정보 이미지와 암호화 키를 포함하는 암호화 프로세스에 대한 두 가지 소식이 있습니다. 이 방법에서 원본 이미지 데이터 비트 스트림은 Blowfish 알고리즘의 블록 길이로 분할됩니다.

이미지 헤더는 암호화할 수 없으며 비트맵 픽셀 또는 배열의 시작은 파일 헤더 바로 뒤에서 시작됩니다. 배열의 바이트 구성 요소는 왼쪽에서 오른쪽으로 행 순서로 저장되며 각 행은 이미지의 하나의 스캔 라인을 정의하고 이미지의 행은 위에서 아래로 암호화됩니다.

복호화 프로세스 − 암호화된 이미지는 위에서 아래로 Blowfish 알고리즘의 해당 블록 길이로 나뉩니다. 첫 번째 블록은 복호화 기능에 들어가고 동등한 암호화 키를 사용하여 이미지를 복호화할 수 있지만 하위 키의 적용은 반대로 됩니다. 복호화 과정은 위에서 아래로 이미지의 다른 블록으로 확장됩니다.

Blowfish의 기본 알고리즘은 다음과 같습니다. -

x를 두 개의 32비트 반으로 나눕니다. xL , xR .

그런 다음 i =1에서 16에 대해

xL =xL XOR 파이

xR =F(xL ) XOR xR

xL 교체 및 xR

16 이후 라운드, 스왑 xL 및 xR 마지막 스왑을 취소하려면 다시 한 번.

그런 다음 암호문 =xL의 연결 및 xR , xR =xR XOR P17 및 xL =xL XOR P18 .