关于Security类加密、解密的使用问题 [ 2.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函数,这个怎么用的?
共 0 个回答
没有找到数据。
webees 成都
注册时间:2015-06-06
最后登录:2020-01-14
在线时长:10小时52分
最后登录:2020-01-14
在线时长:10小时52分
- 粉丝5
- 金钱180
- 威望10
- 积分380