首页 > 解决方案 > 加密通过创建随机键和值来解密数据

问题描述

在代码点火器中,

每当用户通过身份验证时,我都想创建一个随机会话。该机制将用于加密/解密视图控制器之间的数据。例如,我希望打开如下表单:

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

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

我试过的:

我也浏览了 Codeigniter 文档以及有关 stackoverflow 和 google 的几篇文章。他们建议使用encryption库来生成随机密钥,并使用库来encrypt使用该密钥对数据进行编码/解码。但挑战是他们希望我将新生成的密钥存储在$config["encryption_key"]

问题从这里开始。在我的控制器函数中,我正在验证用户帐户并设置一些会话变量。同时,我希望生成随机密钥,以便每个用户的密钥 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 文件中,无法在控制器内部设置加密密钥,我完全糊涂了。还有什么方法可以生成随机密钥并为每个登录的会话使用相同的密钥?

标签: codeigniterencryptioncodeigniter-3

解决方案


如果您使用 CI 3,请转到文件夹 /application/config,编辑 config.php,然后输入加密密钥(32 个字符)

搜索以下行: $config['encryption_key'] = 'yourkeyhere';


推荐阅读