2012-09-13 2 views
1

XML 문자열을 암호화하고 어딘가에 저장 한 다음 나중에 암호 해독하려고합니다 (cbc 모드에서 blowfish 사용).Php Blowfish 암호 해독 데이터

문자열을 해독하면 처음 4자를 스크램블합니다. 잘 해독 - - 내가 대신 ecb 모드를 사용합니다

$text = "<?xml version="1.0" encoding="ISO-8859-1"?> ...."; 
$td = mcrypt_module_open('blowfish', '', 'cbc', ''); 
$iv = 'kd84h28v'; 
$ks = mcrypt_enc_get_key_size($td); 
$key = substr(md5('randomString1234'), 0, $ks); 
mcrypt_generic_init($td, $key, $iv); 
$cypher = mcrypt_generic($td, $text); 
print mdecrypt_generic($td, $cypher); 

# prints: çGÖºÌrsion="1.0" encoding="ISO-8859-1"?> 

현재 PHP 구현을 제외하고는 IV를 무시합니다.

내가 잘못하고있는 아이디어가 있습니까? manual에서

+0

ECB는 IV를 지원하지 않습니다, 그것은 구현 세부 아니다. 그것은 "현재의 혼다 모델에 4 개의 바퀴가없는 것을 제외하고는"나는 오토바이를 탈 것이라고 말하는 것과 같다. – NullUserException

답변

0

:

그것은 mcrypt_generic_init()는 데이터를 해독하기 전에 함께 암호화 버퍼를 초기화하는 것이 매우 중요합니다.

그래서 당신은 아마 이런 식으로 뭔가를해야

mcrypt_generic_init($td, $key, $iv); 
$cypher = mcrypt_generic($td, $text); 
mcrypt_generic_deinit($td); 
mcrypt_generic_init($td, $key, $iv); 
print mdecrypt_generic($td, $cypher); 
+0

그 덕분에, 고마워. 왜 내가 ecb를 해독 할 필요가 없는지 궁금 하지만요? –

+0

저는 이것이 다른 패딩 방법과 관련이 있다고 의심하지만, mcrypt 내부에 대해 충분히 확신하지 못한다고합니다. – Nim