mcrypt_decrypt无法正常工作
我正在研究一个简单的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
我为我的项目使用类似的东西,试试吧!
$key = 'password to (en/de)crypt';
$string = ' string to be encrypted '; // note the spaces
$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
echo 'Encrypted:' . "\n";
var_dump($encrypted);
echo "\n";
echo 'Decrypted:' . "\n";
var_dump($decrypted); // spaces are preserved
的名称,谢谢......此作品..... – 2012-07-18 10:02:15
不客气! – 2012-07-18 10:03:39
好而强:) – user2511140 2014-10-22 18:47:00
不知道这是否是正确的答案,但是,因为它是在PHP中的保留关键字,你绝对不应该定义一个名为string
不变。
这是一个好点,但肯定是一个评论,而不是一个答案。 – DaveRandom 2012-07-18 09:52:03
@Geoffrey Brier非常感谢您的评价......我将更改常量 – 2012-07-18 09:58:45
在什么样的字段你存储这些数据在数据库中?您应该使用'VARBINARY'或'BLOB'字段,如果不是,请确保您从数据库检索到的字符串与您插入的字符串相同。 – DaveRandom 2012-07-18 09:54:21
谢谢!!我认为问题在那里! :-) – 2012-07-18 09:57:03