为了加密url中的参数,我在扩展codeigniter加密类之后使用它。扩展的目的是从加密中删除/+-。这工作得很好。但在升级到PHP 7.1后,它显示mcrypt相关方法的弃用错误,文档也建议使用加密库中提供的openssl。所以我实现了它
$this->load->library('encryption');
$this->encryption->initialize(
array('driver' => 'openssl')
);
$this->encryption->encrypt($vendor->vid);但它会生成带有/的加密in。
8da179e79fee45aa3c569d6c54653c99626d57b074fa599f8a109cb0c5f2edb6d7def3f1a6daf5b449d467976a8a32de0819b9af6d84b068f9ec903d41c2bcb9H/eQluY5LUANEDwmCh+/trIvaJu2Bemj2p9J2MnEMII=
如何在CI中使用openssl生成url安全的加密参数?
发布于 2019-01-02 12:10:32
这个问题的一个简单的解决方案是用另一个url安全的分隔符替换掉你不想要的分隔符,就像你所做的那样扩展核心加密库,并使用类似这样的东西:
function encode($string)
{
$encrypted = parent::encrypt($string);
if ( !empty($string) )
{
$encrypted = strtr($encrypted, array('/' => '~'));
}
return $encrypted;
}
function decode($string)
{
$string = strtr($string, array('~' => '/'));
return parent::decrypt($string);
}发布于 2019-05-01 23:54:49
可能没有回答您的问题,但可以通过混淆url安全id的方式解决。
对于生成加密id,就像Youtube的观看id一样,我对CodeIgniter使用了Hashids Spark
https://github.com/sekati/codeigniter-hashids
这个帮助器的目的是实现Hashids,以便从数字生成散列(如YouTube或位),从而模糊数据库ID。
安装就像在指令中我在第20行修改hashids_helper.php一样
require_once FCPATH . 'sparks/sk-hashids/' . HASHIDS_VERSION . '/vendor/Hashids.php';至
require_once FCPATH . 'vendor/Hashids.php'; //according to your Hashids pathhttps://stackoverflow.com/questions/54000639
复制相似问题