2014-02-11 5 views
0

사과에 모두 사과합니다 - 암호화에 초보자 - 며칠 동안 검색하고 마지막으로 철저히 묻습니다.PHP는 tripledes 암호화를 위해 32 바이트 키를 어떻게 처리합니까?

Java TripleDES "DESede/ECB/NoPadding"기능으로 읽을 수있는 데이터를 암호화하고 해독하는 데 PHP를 사용해야합니다.

Java에서 이중 길이 32 자 키가 있습니다. "F4D5CBDF57FEEDCFA41FD6AFE7BCDFEA"는 바이트로 변환되며 아무 문제없이 암호화 된 결과를 제공합니다. (코드가 없습니다.)

PHP에서 tripledes, ecb 함수 호출에 대해 mcrypt를 통해 동일한 키를 시도하면 시스템에서 최대 24자를 예상하므로 키 길이 오류가 발생합니다.

PHP가 Java와 동일한 암호화 된 결과를 생성하기 위해 키에 필요한 작업은 무엇입니까?

+2

Java에서 주요 파생 함수가 무엇인지 찾아야합니다. TripleDES는 최대 168 비트 (21 바이트) 크기의 키를 허용합니다. 32 문자 키는 실제로 128 비트의 데이터가 16 진수로 인코딩 된 것처럼 보입니다. – NullUserException

답변

0

NullUserException이 가정 됨 : 트리플 DES 암호로 사용하기 전에 키를 16 진수에서 2 진수로 변환하십시오. 자바 코드도 똑같이해야한다. Java에서 트리플 DES 키는 24 바이트 또는 16 바이트 (16 바이트는 Java의 이후 버전에서만 지원됩니다. 이전에는 "ABA"DES를 만들기 위해 처음 8 바이트를 끝에 복사하여 24 바이트로 변환해야했습니다. 키).

트리플 키에는 32 바이트 키가 지원되지 않습니다. 그러나 PHP 용 끔찍한 mcrypt 라이브러리를 사용하고 있다면 키는 사용 가능한 가장 큰 키 크기로 잘립니다. 그래서 빠른 속도의 상황 대신에, PHP는 오히려 사용자가 좌절감을 느끼게 만들 것입니다.

+0

mcrypt libs에 잘 맞는 잽을 제외하고, 내 대답에서 빠진 것이 있습니까? 어떤 설명이 필요합니까? –

관련 문제