请不要介意我问这个,但我是php的新手,我需要加密和解密密码。我想通过URL发送密码,所以我听说这是使用mycrypt最安全的方式。
我在mycrypt函数中没有得到KEY的东西? 不应该像密码本身一样秘密。例如我正在使用PHP手册中的这个函数:
<?php
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "this is my personal decryption key";
$text = "Meet me at 11 o'clock behind the monument.";
echo strlen($text) . "\n";
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
echo strlen($crypttext) . "\n";
?>
我可以将$ key设置为我想要的任何内容吗?如果有人下载我设置此$ key的文档源,该怎么办?他能够轻松地再次解密$ text。不是吗?或者这个功能有问题吗?
答案 0 :(得分:1)
使用TLS(HTTPS)可能更简单,更安全。这可以使用相同的技术(例如AES / Rijndael),但可以为您处理许多细节,包括密钥分发。如果使用mcrypt,则需要找到一种安全的方式来交换密钥和IV(初始化向量)。
你显然还需要保护钥匙和IV。因此,如果它嵌入在您的PHP文件中,您必须注意保护该文件。但是,记住服务器端和客户端之间的区别非常重要。除非您的脚本中有错误,否则密钥不会泄漏到生成的HTML文件中。