加密 通过创建随机密钥和值来解密数据。

问题描述 投票:0回答:1

在codeigniter。

每当一个用户被认证时,我想创建一个随机会话,这个机制将用于加密和解密视图控制器之间的数据。这个机制将被用来加密view-controllers之间的数据。例如,我想打开一个如下的表单。

<?php echo form_open('targetcontrollerfunction/'.encryptionfunction(data_to_be_secured)); ?>

因此,如果有人去检查元素, 他们是无法理解的数据 被传递给控制器。

我已经尝试了什么。

我查阅了Codeigniter的文档 以及stackoverflow和google上的一些文章。他们建议使用 encryption 库来生成一个随机密钥和 encrypt 库来使用该密钥对数据进行编码。但挑战在于,他们希望我将新生成的密钥存储在 $config["encryption_key"]

问题从这里开始。在我的Controller函数中,我正在验证用户账户并设置一些会话变量。同时,我希望生成随机密钥,使密钥对每个用户来说都是100%唯一的,但当我在控制器函数中使用以下代码时。

$randomkey=bin2hex($this->encryption->create_key(16));
$config["encryption_key"]=$randomkey;
$this->session->set_userdata('somekey', $this->encrypt->encode("somevalue"));

我也把它改成了:

$randomkey=bin2hex($this->encryption->create_key(16));
$config=array(
        'encryption_key'=>$randomkey
    );
$this->encryption->initialize($config);
$this->session->set_userdata('somekey', $this->encrypt->encode("somevalue"));

我得到一个错误。

为了使用加密类,需要你在配置文件中设置一个加密密钥。

库不能被加载到config.php文件中,encryption_key不能在控制器中设置,我完全搞不懂了。还有什么办法可以随机生成一个密钥,并且每次登录的会话都使用同一个密钥?

codeigniter encryption codeigniter-3
1个回答
-1
投票

如果你使用的是CI 3,进入文件夹applicationconfig,编辑config.php,然后输入加密密钥(32个字符)

搜索下面一行:$config['encryption_key'] = 'yourkeyhere'。

© www.soinside.com 2019 - 2024. All rights reserved.