blowfish 의 PHP module 작성(계속)
By DongHao on 09 1, 2007 9:23 PM
| Permalink | Comments (1) | TrackBacks (0)
얼마 전에 작업 이 필요 해서 blowfish 의 phop module 을 작 성 했 습 니 다.blowfish 홈 페이지 에서 다운로드 한 암호 화 복호화 실현 코드 는 자신 이 암호 화 하고 자신 이 복호화 하 는 것 도 문제 가 없 었 습 니 다.그러나 다른 사람과 연결 할 때 상대방 이 자바 로 쓴 blowfish 복호화 프로그램 은 제 암호 화 된 문자열 을 풀 지 못 했 습 니 다.
상대방 의 자바 코드 를 보 니 blowfish 가 키 외 에 도 그렇게 많은 매개 변수 가 있 을 줄 은 몰 랐 습 니 다.자바 코드 에 적 힌 복호화 모드 는"cfb/nopadding"입 니 다.이것 은 무엇 입 니까?매 뉴 얼 을 자세히 살 펴 보 니 cfb 외 에 도 ecb 가 있 습 니 다.
cbc...어 지 러 워 요.blowfish 홈 페이지 에 제 공 된 코드 에는 이런 것들 이 없어 요!
컴퓨터 보안 에 관 한 가짜 전문가 에 게 달 려 가 물 었 더 니 그 가 대답 했다.
"이것 은 암호 화 모드 일 뿐 대칭 암호 화 입 니 다."
"알고리즘 은 모두 이 몇 가지 모델 이 있 습 니 다."
"그럼 나 는 어떤 모드 를 사용 해 야 다른 사람의 자바 코드 가 나의 꼬치 를 정확하게 복호화 할 수 있 습 니까?"
"서로 다른 패턴 과 암호 화
"알고리즘 은 괜 찮 습 니 다.암호 화 된 문자열 은 모두 같 습 니 다.blowfish 홈 페이지 의 코드 를 사용 하면 됩 니 다."
말 한 것 은 말 하지 않 은 것 과 같다.
나 는 자 료 를 찾 는 것 으로 바 뀌 었 고 마지막 에 결과 가 나 왔 다.서로 다른 대칭 암호 화 이다.
알고리즘(DES,blowfish)은 확실히 몇 가지 암호 화 모드(ecb,
cbc,cfb 등)
알고리즘 은 괜 찮 습 니 다.서로 다른 암호 화 모드 를 사용 하면 암호 화 된 문자열 이 다 릅 니 다!
어떤 암호 화 모드 를 사용 하 든 복호화 할 때 똑 같은 모드 를 사용 해 야 합 니 다.이것 이 바로 상대방 이 제 문자열 을 복호화 할 수 없 는 이유 입 니 다.저 는 암호 화 모드 를 전혀 사용 하지 않 았 습 니 다.Bruce Schneier 형 이 쓴 blowfish 코드 로 끝 났 습 니 다.저 는 mcrypt 만 사용 할 수 있 습 니 다.이 오픈 소스 패 키 지 는 각종 대칭 암호 화 를 제공 할 뿐만 아니 라
알고리즘 은 서로 다른 암호 화 모드 를 제공 하여 많이 사용 할 수 있 습 니 다.
동적 링크 라 이브 러 리 libmcrypt.so 로 다운로드,컴 파일,나의 테스트 코드 와 링크 가 실행 되 고 있 습 니 다.암호 화 문자열 인'hello'가 나 올 때'hello'가 나 올 수 있 습 니까?다시 미 쳐 서 mcrypt 의 예제 코드 를 자세히 보 았 습 니까?에이,내 가 왜 암호 화 된 문자열 을 const 로 흐리멍덩 하 게 설 명 했 지...마지막 으로 순조롭게 컴 파일 할 수 있 는 코드 는:
그 중의 mcrypt_iv 는 cfb 암호 화 모드 에서 사용 하 는 초기 벡터 입 니 다.이 코드 는 암호 화 된 문자열 에 64bit 의 충전(즉,nopadding)을 하지 않 는 이 유 는 cfb 모드 가 채 워 지지 않 기 때 문 입 니 다.
암호 화
알고리즘 자체 가 해결 되 었 습 니 다.PHP module 을 컴 파일 할 때 libmcrypt.a 를 더 하면 만들어 진 module 을 직접 사용 할 수 있 습 니 다.
Tags
blowfish
cfb
mcrypt
module
PHP
blowfish 의 PHP Module 을 작성 합 니 다.
By DongHao on 08 8, 2007 3:46 PM
| Permalink | Comments (0) | TrackBacks (0)
프로젝트 는 어떤 꼬치 에 대해 blowfish 암호 화 를 요구 하고 phop 은 기 존의 blowfish 암호 화 를 하지 않 습 니 다.
알고리즘(하나 있 는 것 같 지만 PHP 를 다시 컴 파일 해 야 합 니 다.너무 번 거 롭 습 니 다.회사 의 몇 십 대의 기계,한 대의 컴 파일 이 없습니다)그래서 blowfish 사이트 에서 소스 코드 를 내 렸 고 PHP Module 의 프레임 워 크 에 따라 간단 한 Module 을 썼 습 니 다.
첫 번 째 번 째 문 제 는 blowfish 는 64bit 데 이 터 를 암호 화 하 는 것 입 니 다.긴 암호 화 문자열 은 8 개의 바이트 로 나 누 어 암호 화 해 야 합 니 다.그러나 세 개의 문자열 을 암호 화 하려 면 어떻게 해 야 합 니까?인터넷 에서 한참 을 찾 아 보 니 뒤에 0 을 보충 한 다 는 것 을 알 게 되 었 다.
그러나 얼마 지나 지 않 아 또 하나의 번 거 로 움 을 만 났 다.한 단락 의 문 자 를 암호 화한 후에 복호화 하면 복원 할 수 없다 는 것 을 발견 했다.더 나 쁜 것 은 어떤 문자열 은 이 렇 고 어떤 문자열 은 복원 할 수 있다 는 것 이다.어지럽다소 녕 에 게 물 었 더 니 그 도 생각 지도 못 했다.마지막 으로 이 유 를 생각 했다.PHP Module 에서 바 이 너 리 문자열 의 직접 할당 은 신뢰 할 수 없 으 므 로 base 64 에서 encode 를 해 야 합 니 다!즉,blowfish 암호 화 뒤에 base 64 의 encode 를 따라 가 야 합 니 다.그렇지 않 으 면 바 이 너 리 문자열 을 직접 사용 하기 어렵 습 니 다.
PHP Module 을 쓰 는 것 도 식견 이 넓 습 니 다.참,저 는 FlatDB 에 도 PHP Module 을 써 서 쉽게 호출 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.