PHP双向加密[重复]

Posted

技术标签:

【中文标题】PHP双向加密[重复]【英文标题】:PHP two way crypting [duplicate] 【发布时间】:2012-03-15 04:36:02 【问题描述】:

可能重复:Best way to use php to encrypt and decrypt?

我是 PHP 中双向加密技术的新手。我曾使用 sha512 作为单向哈希,但现在我真的需要双向加密。我不知道从哪里开始。你能告诉我为了最安全我必须使用哪种方法吗?你能给我一个简单的“hello world”例子吗?

已编辑

感谢您的所有回答,我发现 mCrypt 是解决我问题的关键,但我可以使用很多方法,例如 MCRYPT_3DES、MCRYPT_CAST_128、MCRYPT_CAST_256.... 那该用什么?

【问题讨论】:

尝试搜索。有很多关于如何使用 PHP 进行加密的信息。 Here On SO, On PHP.Net, Another On SO sha512 是一种加密系统,我在 PHP 中使用,我用谷歌搜索过,但是 mCrypt 是否默认安装在服务器中? mCrypt 方法中哪种方法最安全? @user1228636:不,不是。这是一个加密哈希函数。请参阅this answer 了解更多信息 我可以在 mCrypt 中使用多种方法,你能给我推荐一种最安全的方法吗? 【参考方案1】:

您可以尝试使用 openssl 函数来满足您的需求:openssl_public_encrypt 和 openssl_private_decrypt。

要使用它们,您必须自己生成一个 RSA 公钥/私钥对。

【讨论】:

谢谢你的回答,但你能不能再推荐一两个方法,让你有选择的机会【参考方案2】:

不要将散列与加密混为一谈。

您可以使用mcrypt-expansion,它有据可查,他们有一些很好的例子,比如这个:

 $key = "this is a secret key";
 $input = "This is a top secrep message.";

 $td = mcrypt_module_open('tripledes', '', 'ecb', '');
 $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
 mcrypt_generic_init($td, $key, $iv);
 $encrypted_data = mcrypt_generic($td, $input);
 mcrypt_generic_deinit($td);
 mcrypt_module_close($td);

还有很多其他方法,openssl 就是其中之一。

【讨论】:

我可以使用很多方法,例如 MCRYPT_3DES、MCRYPT_CAST_128、MCRYPT_CAST_256.... 那该用什么呢? 随心所欲。该库支持一些算法,请参阅此处了解更多详细信息:mcrypt.hellug.gr/#_mcrypt。目前它似乎支持 BLOWFISH、TWOFISH、DES、TripleDES、3-WAY、SAFER、LOKI97、GOST、RC2、MARS、RIJNDAEL、SERPENT、CAST、ARCFOUR 和 WAKE。我不是该主题的专家,所以我不确定哪个比其他更安全(我建议不要使用 DES)。【参考方案3】:

你可以使用 PHP 自带的 mcrypt

这是 Mcrypt 的 PHP Manual(手动总是最好的开始)

既然您要求使用简单的 hello-world 类型。看看这里link。

【讨论】:

是的,有关于 mCrypt 的手册,但是对于 mCrypt,我认为,我可以使用很多方法,例如 MCRYPT_3DES、MCRYPT_CAST_128、MCRYPT_CAST_256.... 那该用什么呢?

以上是关于PHP双向加密[重复]的主要内容,如果未能解决你的问题,请参考以下文章

与 PHP 一起使用的最佳密码加密和解密技术 [重复]

GET发送的PHP加密参数损坏[重复]

加密密码php的最佳方式(2017年)[重复]

PHP最强的单向加密/散列方法[重复]

MySQL中的密码加密[重复]

python:双向部分信用卡存储加密