如何加密静态数据?

时间:2011-05-05 17:57:48

标签: php encryption aes

请问我在休息时加密数据吗?我知道SSL在传输过程中加密。

如何在phpmyadmin中集成AES 256位加密?

2 个答案:

答案 0 :(得分:1)

如果您正在谈论直接加密/解密数据,那么php.net manuals中就有一些很好的例子。

然后在将数据插入数据库之前加密数据,不会通过phpMyAdmin加密任何内容。

答案 1 :(得分:1)

以下是使用mcrypt的示例:

<?
// Encrypt Function
function mc_encrypt($encrypt, $mc_key) {
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
    $passcrypt = trim(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $mc_key, trim($encrypt), MCRYPT_MODE_ECB, $iv));
    $encode = base64_encode($passcrypt);
    return $encode;
}

// Decrypt Function
function mc_decrypt($decrypt, $mc_key) {
    $decoded = base64_decode($decrypt);
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
    $decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $mc_key, trim($decoded), MCRYPT_MODE_ECB, $iv));
    return $decrypted;
}
?>

在此处详细了解该库:http://php.net/manual/en/ref.mcrypt.php

编辑:

如果我误解了这个问题而您想在mysql中执行此操作,则可以使用内置在aes加密函数中的mysql:

INSERT INTO users SET name = "User1", password = AES_ENCRYPT("password", "encryption key");

和:

SELECT AES_DECRYPT(password, "encryption key") FROM users WHERE id = 1;

然而,这只是aes128,如果你想直接在mysql中使用aes256,你必须修改源代码并重新编译。

在这里阅读更多相关信息:

http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html#function_aes-encrypt