【发布时间】:2013-08-25 20:34:02
【问题描述】:
我正在使用 Yii CSecurityManager 进行密码加密:
$this->securityManager->encrypt('TEST', '1');
*TEST 是要加密的字符串,1 是密钥。
但是当我在解密之前进行测试时,我发现值一直在变化。
for ($index = 0; $index < 10; $index++) {
$EncPassword = $this->securityManager->encrypt('TEST', '1');
echo $EncPassword;
}
我在我的应用程序的另一部分依赖这个值...我挖掘了加密密码,我发现它实际上是随机的:
public function encrypt($data,$key=null)
{
$module=$this->openCryptModule();
$key=$this->substr($key===null ? md5($this->getEncryptionKey()) : $key,0,mcrypt_enc_get_key_size($module));
srand();
$iv=mcrypt_create_iv(mcrypt_enc_get_iv_size($module), MCRYPT_RAND);
mcrypt_generic_init($module,$key,$iv);
$encrypted=$iv.mcrypt_generic($module,$data);
mcrypt_generic_deinit($module);
mcrypt_module_close($module);
return $encrypted;
}
所以我的问题是如何根据密钥进行加密并每次都获得相同的值?
谢谢, 丹尼
【问题讨论】:
-
为什么要加密密码?
-
它是我应用程序的一部分...它不仅仅是密码,我需要这个功能
-
但是为什么呢?这是没有意义的,即使您必须加密某些数据,也不需要每次都生成相同的输出。并且密码不应该被加密,它们应该被散列。
标签: php encryption random yii