2015-06-19 20:55:42 7765次浏览 0条回答 4 悬赏 0 金钱

说明:

看了一些关于数据加密和数据安全的文章,感觉yii的加密方式相对来说简单,安全性也还是可以。

我看文档和源码,encryptbykey的速度比encryptbypassword快,encryptbykey使用的Security类中的hkdf()算法encryptbypassword使用的Security类中的pbkdf2()算法

encryptbypassword算是对称加密了吧,encryptbykey如果添加了$info就相当与非对称加密了($info完全可以是加密后的字串)。

如果encryptbykey不添加$info就和encryptbypassword差不多啊,所以两者的具体应用的场景不是特别清楚,希望有知道的朋友帮忙回答下。

具体应用的场景不是特别清楚!
Class yii\base\Security;
加密/解密:encryptbykey(),decryptbykey()和encryptbypassword()、decryptbypassword()。

下面是一个测试示例:

<?='<h2>数据:</h2>' . $data = "我是要加密的数据,我可以是手机号、邮箱等!";?></br>
<?='<h2>密匙:</h2>' . $key  = "我是数据密匙,解密需要我,一般我是随机生成的数据!";?></br>
<?='<h2>信息:</h2>' . $info = "这是可选信息。个人认为相当于公匙";?></br>
<?='<h2>通过encryptByPassword($data, $password)加密:</h2>' . $cipher = \yii::$app->security->encryptByPassword($data, $key);?></br>
<?='<h2>通过decryptByPassword($data, $password)解密:</h2>' . \yii::$app->security->decryptByPassword($cipher, $key);?></br>
<?='<h2>通过encryptByKey($data, $inputKey, $info = null)加密:</h2>' . $cipher = \yii::$app->security->encryptByKey($data, $key, $info);?></br>
<?='<h2>通过decryptByKey($data, $inputKey, $info = null)解密:</h2>' . \yii::$app->security->decryptByKey($cipher, $key, $info);?></br>

每次刷新生成的密文是不一样的,因为上面的每次加密过程都会生成“盐”,方式就是调用:

<?=\yii::$app->security->generateRandomKey(); //随机生成指定的字节数(默认长度32,输出可能不是ASCII。)?></br>

补充一个返回字符串的:

<?=\yii::$app->security->generateRandomString(); //随机生成一个指定长度的字符串(默认长度32)?></br>

另外,在该类的结尾还有个compareString函数,这个怎么用的?

    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
webees
见习主管

webees 成都

注册时间:2015-06-06
最后登录:2020-01-14
在线时长:10小时52分
  • 粉丝5
  • 金钱180
  • 威望10
  • 积分380

热门问题