2013-11-22 3 views
0

삼중 DES :내가 PHP를 사용하여 암호화 데이터를 생성하는 작업 코드가 초기화 벡터

$cipher_alg = MCRYPT_TRIPLEDES; 
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND); 
$encrypted_string = mcrypt_encrypt($cipher_alg, $pKey, $string, MCRYPT_MODE_ECB, $iv); 

질문, 난 항상 같은 입력을 경우하는 $encrypted_string 나에게 동일한 출력을 제공,이 코드를 여러 시간을 실행 $iv에 대한 다른 출력. IV가 변경되면 내 암호화 데이터가 항상 동일한 이유는 무엇입니까?

고맙습니다.

답변

1

ECB mode은 IV를 사용하지 않으므로 전달할 항목이나 매번 다른 내용은 중요하지 않습니다. mcrypt_encrypt 자체에 대한 문서는 간접적으로 이렇게 말한다 : CBC, CFB, OFB 모드의 초기화에 사용

iv

및 STREAM 모드에서 일부 알고리즘이다. IV를 제공하지 않으면 알고리즘에 대해 이 필요하지만이 함수는 경고를 발행하고 IV 을 사용하여 모든 바이트를 "\ 0"으로 설정합니다.

각 반복마다 다른 결과를 보려면 체인 모드 (CBC 등)를 사용해야합니다. 일반적으로 ECB 모드는 매우 나쁜 선택입니다. 사용하지 마십시오.