首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Codeigniter中生成URL安全的加密ids

在Codeigniter中生成URL安全的加密ids
EN

Stack Overflow用户
提问于 2019-01-02 10:41:14
回答 2查看 1.5K关注 0票数 0

为了加密url中的参数,我在扩展codeigniter加密类之后使用它。扩展的目的是从加密中删除/+-。这工作得很好。但在升级到PHP 7.1后,它显示mcrypt相关方法的弃用错误,文档也建议使用加密库中提供的openssl。所以我实现了它

代码语言:javascript
运行
复制
    $this->load->library('encryption');
    $this->encryption->initialize(
        array('driver' => 'openssl')
    );
    $this->encryption->encrypt($vendor->vid);

但它会生成带有/的加密in。

8da179e79fee45aa3c569d6c54653c99626d57b074fa599f8a109cb0c5f2edb6d7def3f1a6daf5b449d467976a8a32de0819b9af6d84b068f9ec903d41c2bcb9H/eQluY5LUANEDwmCh+/trIvaJu2Bemj2p9J2MnEMII=

如何在CI中使用openssl生成url安全的加密参数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-02 12:10:32

这个问题的一个简单的解决方案是用另一个url安全的分隔符替换掉你不想要的分隔符,就像你所做的那样扩展核心加密库,并使用类似这样的东西:

代码语言:javascript
运行
复制
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);
}
票数 0
EN

Stack Overflow用户

发布于 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一样

代码语言:javascript
运行
复制
require_once FCPATH . 'sparks/sk-hashids/' . HASHIDS_VERSION . '/vendor/Hashids.php';

代码语言:javascript
运行
复制
require_once FCPATH . 'vendor/Hashids.php';  //according to your Hashids path
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54000639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档