我給需要做加密和解密的Drupal模塊提供一些代碼。我不認爲我可以假設Mcrypt模塊安裝在Drupal系統上。我可以使用什麼作爲替代加密機制?Mcrypt在PHP中用於加密/解密的替代品?
這個心不是財務的東西,所以我不需要複雜的密碼學,但更好的是尤爲明顯......
我給需要做加密和解密的Drupal模塊提供一些代碼。我不認爲我可以假設Mcrypt模塊安裝在Drupal系統上。我可以使用什麼作爲替代加密機制?Mcrypt在PHP中用於加密/解密的替代品?
這個心不是財務的東西,所以我不需要複雜的密碼學,但更好的是尤爲明顯......
如何使用您的數據庫? MySQL具有AES和DES加密和解密功能。然後你可以使用一個「假」的查詢,讓您的字符串:(MySQL的返回一個空集,如果你不從表中至少有一個字段)
select id, aes_encrypt('My secret text', 'the key string')
from permissions
limit 1
解密的工作原理相同辦法。它是128位的AES,這並不算太壞,加密,如果你甚至不能確定MCrypt,我懷疑你會重新編譯MySQL來獲得256位AES。
的Encryption module模塊默認包含一個基本的加密方法,它描述爲「一個簡單的數學加密方法不需要任何PHP擴展。「
有幾種加密PHP代碼的方法,使用密鑰來加密/解密代碼使得它作爲MCrypt的替代品更加安全。
一種方法是創建一個可能需要密鑰才能完成加密或解密的功能。 PHP的內置函數有gzdeflate()
或gzinflate()
,另一個是使用base64_encode()
/base64_decode()
和str_rot13()
函數。
但我不認爲使用PHP Encoder會工作。
根據Leon的回答,PHP Encoder正在使用可能無法在Drupal上工作的MCrypt模塊。另一種方法是使用IonCube編碼器。
如果你想要一個更嚴格的功能,你還可以嘗試使用hash()
和md5()
函數來創建你的鑰匙,並要求它在你的gzdeflate()
/gzinflate()
功能的回報作爲什麼Leon的建議加密功能。
你可以假設PHP是根本安裝的嗎?如果否 - 那麼爲什麼不選擇另一種編程語言呢? – zerkms 2011-04-21 02:28:14
這是一個奇怪的諷刺評論 – siliconpi 2011-04-21 03:03:00
@Frank D:是的。但這就是「軟件要求」的工作原理。使用任何你想要的,並需要創建你的代碼(並使其完美,性能和可讀性),然後在需求自述部分中指定所有依賴關係。對於每個程序都是如此,不要試圖避免它。 – zerkms 2011-04-21 03:06:06