我正在研究一個簡單的Zend應用程序,我需要先加密所有財務數據,然後再將它們存儲在數據庫中,並在需要時將其解密。我用mcrypt_encrypt()
和mcrypt_decrypt()
。由於我需要解密數字,我使用了一個常量初始化向量(iv),這並不是建議的。mcrypt_decrypt無法正常工作
這裏是我的代碼:
define ('string','WdryhedeescmsfkirYNemsjdesapQ');
define ('iv', '$356?dWuSkm)@g%dnw#8mA*');
class FormatValues {
const string= 'WdryhedeescmsfkirYNemsjdesapQ';
const iv = '$356?dWuSkm)@g%dnw#8mA*';
public function encrypt($val){
$enc = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $val,self::string , MCRYPT_MODE_CBC,self::iv);
return $enc;
}
public function decrypt($val){
$dec = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $val,self::string , MCRYPT_MODE_CBC,self::iv), "\0");
return $dec;
}
}
的encrypt()
方法對數據進行加密,解密,但時,它並沒有給出正確的數字。
這是爲什麼?有沒有其他方式來加密和解密數據,而不是一個常數iv?
在此先感謝
Charu
在什麼樣的字段你存儲這些數據在數據庫中?您應該使用'VARBINARY'或'BLOB'字段,如果不是,請確保您從數據庫檢索到的字符串與您插入的字符串相同。 – DaveRandom 2012-07-18 09:54:21
謝謝!!我認爲問題在那裏! :-) – 2012-07-18 09:57:03