需要从Concrete5中的外部表单使用SHA512加密整个表

Aar*_*ple 2 php mysql encryption

我有一个复杂的表单,该表单将数据发布到MySQL数据库中的2个不同表中。那部分工作正常。但是,我需要存储使用特定密钥加密的信息,以便当我的API将数据发送到另一台服务器时,可以在另一端对其进行解密。向我推荐了SHA512,但我不确定。

我有SQL / MySQL经验,但以前从未处理过加密。

我正在使用PHP 7.1 / mysqli

谢谢!

Sco*_*ski 5

但是,我需要存储使用特定密钥加密的信息,以便当我的API将数据发送到另一台服务器时,可以在另一端对其进行解密。

这听起来大致类似于CipherSweet要解决的问题。

CipherSweet解决了PHP和Node.js软件的“可搜索加密”问题。

改编自CipherSweet EncryptedRow文档

<?php
use ParagonIE\CipherSweet\BlindIndex;
use ParagonIE\CipherSweet\CipherSweet;
use ParagonIE\CipherSweet\EncryptedRow;
use ParagonIE\CipherSweet\KeyProvider\StringProvider;

// Configuration (with a random hex-encoded example key):
$keyProvider = new StringProvider('4e1c44f87b4cdf21808762970b356891db180a9dd9850e7baf2a79ff3ab8a2fc');
$engine = new CipherSweet($keyProvider);

// Define your row structure
$processor = (new EncryptedRow($engine, 'my_table_name'))
   ->addTextField('my_column_name')
   ->addTextField('other_column_name')
   ->addBooleanField('secret_boolean')
   ->addIntField('secret_integer')
   ->addFloatField('secret_decimal_value');
Run Code Online (Sandbox Code Playgroud)

设置好处理器后,还可以将盲索引添加到加密行中的每个字段(或“复合盲索引”,它由多个纯文本字段组成)。

$processor->addBlindIndex(
    'my_column_name', // column
    new BlindIndex(
        'my_column_name_index', // index name (used in key derivation)
        [], // Empty array: No transformations,
        8, // Index size (bits); use the planner to get recommended sizes
    )
);
Run Code Online (Sandbox Code Playgroud)

注意盲目索引

盲索引为您提供了强大的功能和灵活性(即,不仅可以加密数据库记录,而且仍可以SELECT通过在WHERE子句中使用盲索引来构造高效的查询),但是如果您偏离所提供的建议,则可能导致数据泄漏由计划者。

但是,如果您按指示使用它,则可以对数据库的安全性提出有力的论据,这将受到第三方安全评估人员的审查(无论您是否使用CipherSweet,都应绝对雇用该评估员)。

一旦配置了处理器(有或没有盲索引),就可以像下面这样对行进行加密/解密:

// Encrypting/decrypting an example row
$plaintext = [
    'unspecified' => 'not defined in the processor, will remain unencrypted',
    'my_column_name' => 'foo',
    'other_column_name' => 'bar',
    'secret_boolean' => false,
    'secret_integer' => 123456,
    'secret_decimal_value' => 3.14
];
[$encryptedRow, $indexes] = $processor->prepareRowForStorage($plaintext);
// Now use $encryptedRow and $indexes in your database queries

// To decrypt, you only need the first item ($encryptedRow)
$decrypted = $processor->decryptRow($encryptedRow);
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找安全,易于使用的解决方案,CipherSweet可以助您一臂之力,但并不是您要找的100%。仍然需要使用一些特定于应用程序的可用性逻辑。

如果您需要那种难以捉摸的100%交钥匙易于使用的解决方案,请要求安全公司为您构建它。Paragon Initiative Enterprises(开发和维护CipherSweet)提供了此类服务。(免责声明:我为PIE工作。)

向我推荐了SHA512,但我不确定。

正如其他人所述,SHA512是哈希函数,而不是密码。区别很重要