【发布时间】:2011-09-21 10:32:32
【问题描述】:
在 PHP 中,哪种(可解密)加密算法最安全?
我的意思是MD5不能被解密回来吧?
我找到了完整的带有 mcrypt(然后再次使用 base64 编码)的工作类,它可以加密和解密回来。
示例 mcrypt(加密):
function encrypt($value) {
if(!$value){return false;}
$text = $value;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->key, $text, MCRYPT_MODE_ECB, $iv);
return trim($this->safe_b64encode($crypttext));
}
然后用base64再次编码:
function safe_b64encode($string) {
$data = base64_encode($string);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}
(对不起,代码只是加密,没有解密。我只是给出示例。) 但我只想知道是否还有其他比使用 mcrypt 更安全的算法。
【问题讨论】:
-
base64是 NO 加密!这是某种编码。因此它根本不安全。在ext/mcrypt中查找 AES (Rijndael)、Blowfish、Serpent、Skipjack 等内容,对于 PHP:de2.php.net/manual/en/book.mcrypt.php -
请缩小你的问题,因为答案真的取决于你想要什么加密。只是为了澄清:MD5 不是“加密” - 它是“散列”。这意味着不可逆转。同样,Base64 不是“加密”——它是“编码”。请阅读(维基百科就足够了)这三个术语。你应该知道没有最好的算法 - 都有其优点和缺点。澄清一下,请
-
你需要它做什么?
-
@Stefan 抱歉,我现在已经编辑了问题。
-
@Col。弹片有什么用? @_@ 你不需要在你的代码中使用任何加密吗??
标签: php encryption