我已经阅读了很多关于加密和认识了很多新的东西已经出来了,因为PHP 7.我写两个功能(加密和decrpyt)存储在我的数据库加密的数据。OpenSSL编成密码随机密钥和IV-存放在DB
我了解OpenSSL的功能的作品,但我想知道如果我在我的数据库存储得当,或者我应该说安全。我的代码如下:
function wm_encryptString($string) {
$method = 'aes-256-xts';
$key = random_bytes(16);
$iv = random_bytes(16);
$cipherText = openssl_encrypt($string, $method, $key, 0, $iv);
$cipherText = $key.$iv.$cipherText;
$cipherText = base64_encode($cipherText);
return $cipherText;
}
function wm_decryptString($cipher) {
$cipher = base64_decode($cipher);
$method = 'aes-256-xts';
$key = substr($cipher, 0, 16);
$iv = substr($cipher, 16, 16);
$cipher = substr($cipher, 32);
$readableText = openssl_decrypt($cipher, $method, $key, 0, $iv);
return $readableText;
}
当我运行这两个函数它加密和解密就好了。我的具体问题是,是使用随机字节生成密钥和IV安全,并将其附加到密文安全存储在数据库?我存储了一些敏感信息,并希望确保它被安全地加密。
我的第二个问题是,我知道我可以使用这些函数加密字符串,但我可以加密使用此功能相同的斑点?我在我的数据库中存储了一些文档(我知道很多人会说从不将数据存储在数据库中,但是使用数据库,因为我只存储少于100个文档,并且使备份更容易)。我可以使用这个相同的功能加密一个blob /文件吗?
任何反馈将不胜感激,因为我希望我的应用尽可能安全。注意我知道我必须采取更多的安全措施来确保我的应用程序是安全的,我的问题仅限于加密。谢谢。
这真的是我的问题吗?我无法找到存储密钥的行业标准。没有人有关于如何/在哪里存储密钥的建议? – user982853
存储和保护密钥显然很重要,加密不会比密钥更安全。关键存储没有行业标准。您需要根据您的威胁模型确定所需的安全级别。攻击者的范围从阻止好奇到挫败的民族国家。选项可以从便笺,配置文件以及高端HSM中的物理安全位置运行。 – zaph