【发布时间】:2019-07-23 18:37:24
【问题描述】:
我想使用 OpenSSL 加密/解密数据库数据。我在以下链接中找到并尝试使用代码: How to encrypt plaintext with AES-256 CBC in PHP using OpenSSL?
但是,如果我希望能够在稍后阶段解密已加密的数据,我似乎需要保留加密密钥和初始化向量以供以后使用。这给了我一个问题,因为我找不到存储这些数据位的方法。它们是在我加密数据时随机生成的,并且在那之后我目前会丢失它们,因为看起来我无法存储它们。我可以将它们存储到 PHP 变量中,但不能长期将它们存储在其他任何地方。
我的目标是加密客户数据库中的所有数据,因此显然需要这些数据位在必要时解密数据。在数据库中添加新数据或编辑现有数据时,我也需要使用它们。
因此,我需要找到一种存储加密密钥和初始化向量以供以后使用的方法。它们都是字节数组(32 字节和 16 字节),但除了 PHP 变量之外,我找不到存储它们的方法。
任何帮助将不胜感激。
【问题讨论】:
-
可能感兴趣:Where to store a server side encryption key? 另外,How to store the encryption keys securely in php code file。如果您使用其中一些相同的关键字进行搜索,可能还有很多其他关键字。
-
我遇到的主要问题是重建加密密钥和初始化向量,它们需要是字节数组(加密密钥是 32 字节 + 初始化向量是 16 字节)。我可以在创建这些字段时从这些字段中获取数据,但我需要在稍后阶段重新构建它们,以便我可以使用它们使用相同的密钥和向量进行加密/解密。我只需要找出如何使用所需数据重建它们。这是我的主要问题。看起来我需要使用 PHP 打包/解包函数,但我看不到如何使用它们来创建包含二进制或十进制数据的字节。
标签: php encryption openssl