나는 PHP + RIJNDAEl_128 + CBC로 다시 돌아 왔습니다.PHP MYCRYPT - McJCBC가있는 RIJNDAEL_128은 매번 다른 암호화 문자열을 제공합니다.
원시 문자열에 대한 암호화 및 암호 해독에 성공했습니다.
하지만 내가 직면 한 유일한 문제는 매번 DEPFERENT ENCRYPTION 문자열을 얻는 것입니다.
나는 항상 이상적으로 동일해야한다고 생각합니다.
class Encypt{
const ENCRYPTION_KEY = '3aa22e01c04c7059778c54d122b0273689fba00f4a166a66d15f7ba6a8ba8743';
function createQueryString(){
$str = "1844427316My Name Is Dave1336407610774000000000000";
$encStr = $this->encrypt($str);
return $encStr;
}
function encrypt($strValue){
$iv =mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC),MCRYPT_RAND);
$encData = trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128,self::ENCRYPTION_KEY, $strValue,MCRYPT_MODE_CBC,$iv)));
$data['iv'] = $iv;
$data['encdata'] = $encData;
return $data;
}
/**
* Function to decrypt data using AES Encryption Symmetric Algorithm 128 bytes
*/
function decrypt($strValue, $iv){
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128,ENCRYPTION_KEY,base64_decode($strValue),MCRYPT_MODE_CBC,$iv));
}
}
$enc_obj = new Encypt();
$encstr = $enc_obj->createQueryString();
echo "Encrypted Str:-->".$encstr['encdata']."<br>";
$deCrypt = $enc_obj->decrypt($encstr['encdata'], $encstr['iv']);
echo "Decrypted Str:-->".$deCrypt;
매번 랜덤 바이트 다이제스트이므로 해독 키와 IV를 해독 함수로 전달합니다. –
프로 팁 :이 작업을 수행하지 마십시오. 라이브러리를 사용하십시오. Zend \ Crypt를 추천합니다 ... – ircmaxell
@ircmaxell 어쨌든이 조합을 사용해야합니다 ... – Padyster