2014-07-14 4 views
0

나는 그물에서 읽을 수있다 : Blowfish 알고리즘은 대칭이다. 그리고 PHP.net crypt 함수는 crypting.Crypt func의 한 가지 방법으로 Blowfish를 해시 알고리즘으로 사용할 수 있습니다.Blowfish 해싱 알고리즘과 함께 Crypt PHP 함수를 사용하면 Symmetric crypting인가요?

대칭 암호를 양방향 암호 처리 절차와 연관시킬 때 맞습니다. 나는 모순을 봅니다.

분명히 crypt() + Blowfish를 사용하면 누군가가 비밀 문자열을 알면 문자열 을 암호 해독 할 수있는 기회를 줄 수 있습니까?

많은 감사

을 는이 해시라고 암호 해독되지 않은 경우 가

답변

2

복어와 같은 암호 알고리즘은 해시 알고리즘의 일부로 사용할 수 있습니다. 복어는 단지 "빌딩 블록"일 뿐이며 다른 목적으로 사용될 수 있습니다. 암호화/복호화 도구 또는 해시 알고리즘의 암호화 기본 요소로 구현할 수 있습니다. 이것은 갑자기 해시 알고리즘을 되돌릴 수 있음을 의미하지 않습니다.

해시 알고리즘의 출력이 항상 일정한 길이라는 사실은 되돌릴 수없는 공짜입니다. 무한 수의 잠재적 입력 값을 가역적으로 고정 길이 출력으로 암호화 할 수 없습니다. 알고리즘은 필요에 따라 손실이 있습니다입니다. 간단한 예시로서

는 복어 (이어서 를 해독 할 수있는) 암호화 데이터와 같이 사용될 수있다 :

ABCD EFGH IJKL MNOP ... 
    | | | | 
    v v v v 
NPCQ JQ0C MPZW LKAQ 

블록 입력 개별적 암호문으로 온 복어에 의해. 그 이유는 복어를 블록 암호 (스트림 암호과는 반대로 입력을 스트림으로 처리하고 고정 길이 블록 집합이 아닌)이라고합니다. 이 작업의 결과는 되돌릴 수있는 블록 묶음입니다. 출력은 입력과 같은 길이입니다 (필요한 경우 블록을 채우기위한 패딩 포함).

복어를 이용한 해시 함수는 다음과 같이 작동한다 : 각 블록의 출력은 하나로 두 블록을 결합 압축 함수 통해 실행

ABCD EFGH  IJKL  MNOP ... 
    | |   |   | 
    v v   v   v 
NPCQ JQ0C  MPZW  LKAQ 
    | |   |   | 
    +----+--> PMQZ --+--> OLMQ --+--> UALG ... 

. 첫 번째 두 블록의 출력이 결합되어 (PMQZ),이 값은 세 번째 블록의 출력과 결합됩니다 (OLMQ). 마지막 압축 결과는 해시의 결과입니다.

보시다시피 복어는 내부적으로 암호 암호로 사용되지만 출력은 출력을 뒤집을 수없는 손실 압축 기능과 결합됩니다.

1

암호화 가지, 암호 해독하고, 해시는 원 -이다 (필자는 암호화 등 소금이 포함되어있는 암호화 되 문자열에서 볼 수 있기 때문에 사실은 생각하지 않는다) 방법.

0

당신은 잘못 생각하고 있습니다. 소금과 암호가 함께 사용되며, 데이터 인 마법 문자열이 있습니다 (암호는 데이터가 아닙니다). 열쇠가 없으면 암호 해독이 없습니다. 이것은 다음에 반복됩니다 (bcrypt가하는 일입니다).

아주 좋은 대답은 sha512 vs blowfish vs bcrypt을 참조하십시오.