我正在为需要进行加密和解密的Drupal模块提供一些代码。我不认为我可以假设Mcrypt模块安装在Drupal系统上。我可以使用什么作为替代加密机制?
这不适用于财务方面,所以我不需要复杂的密码学,但更好的是... ...
答案 0 :(得分:6)
如何使用您的数据库? MySQL具有AES和DES加密和解密功能。然后,您可以使用“假”查询来获取字符串:
select id, aes_encrypt('My secret text', 'the key string')
from permissions
limit 1
(如果表中没有至少一个字段,MySQL将返回一个空集。)
解密以同样的方式工作。它是128位AES,这在加密方面也不算太差,如果你甚至不能确定MCrypt,我怀疑你会重新编译MySQL以获得256位AES。
答案 1 :(得分:2)
有几种加密PHP代码的方法,使用密钥加密/解密代码使其更安全,作为MCrypt的替代。
一种方法是创建一个可能需要密钥才能完成加密或解密的功能。
PHP有内置函数,如gzdeflate()
或gzinflate()
,另一个使用base64_encode()
/ base64_decode()
和str_rot13()
函数。
但我不认为使用PHP Encoder会有效。
答案 2 :(得分:1)
Encryption module模块默认包含一种基本加密方法,它描述为“一种不需要任何PHP扩展的简单数学加密方法。”
答案 3 :(得分:1)
根据Leon的回答,PHP Encoder正在使用可能无法在Drupal上运行的MCrypt模块。另一种方法是使用IonCube Encoder。
如果您想要更严格的功能,您也可以尝试使用hash()
和md5()
功能来创建密钥,并在加密函数时使用gzdeflate()
/的返回值gzinflate()
符合Leon的建议。