2011-04-21 85 views
3

我給需要做加密和解密的Drupal模塊提供一些代碼。我不認爲我可以假設Mcrypt模塊安裝在Drupal系統上。我可以使用什麼作爲替代加密機制?Mcrypt在PHP中用於加密/解密的替代品?

這個心不是財務的東西,所以我不需要複雜的密碼學,但更好的是尤爲明顯......

+0

你可以假設PHP是根本安裝的嗎?如果否 - 那麼爲什麼不選擇另一種編程語言呢? – zerkms 2011-04-21 02:28:14

+0

這是一個奇怪的諷刺評論 – siliconpi 2011-04-21 03:03:00

+0

@Frank D:是的。但這就是「軟件要求」的工作原理。使用任何你想要的,並需要創建你的代碼(並使其完美,性能和可讀性),然後在需求自述部分中指定所有依賴關係。對於每個程序都是如此,不要試圖避免它。 – zerkms 2011-04-21 03:06:06

回答

6

如何使用您的數據庫? MySQL具有AES和DES加密和解密功能。然後你可以使用一個「假」的查詢,讓您的字符串:(MySQL的返回一個空集,如果你不從表中至少有一個字段)

select id, aes_encrypt('My secret text', 'the key string') 
from permissions 
limit 1 

解密的工作原理相同辦法。它是128位的AES,這並不算太壞,加密,如果你甚至不能確定MCrypt,我懷疑你會重新編譯MySQL來獲得256位AES。

+0

非常iunteresting方法...思考的食物! – siliconpi 2011-04-25 06:09:52

+0

比keyize更重要的是它使用的blockcipher模式是什麼?你知道這一點嗎? – Perseids 2014-04-24 21:08:05

+0

聰明。在我的MySQL版本中,'SELECT aes_encrypt('我的祕密文本','密鑰字符串');'工作。 – Jerry 2015-03-16 17:18:49

1

Encryption module模塊默認包含一個基本的加密方法,它描述爲「一個簡單的數學加密方法不需要任何PHP擴展。「

2

有幾種加密PHP代碼的方法,使用密鑰來加密/解密代碼使得它作爲MCrypt的替代品更加安全。

一種方法是創建一個可能需要密鑰才能完成加密或解密的功能。 PHP的內置函數有gzdeflate()gzinflate(),另一個是使用base64_encode()/base64_decode()str_rot13()函數。

但我不認爲使用PHP Encoder會工作。

1

根據Leon的回答,PHP Encoder正在使用可能無法在Drupal上工作的MCrypt模塊。另一種方法是使用IonCube編碼器。

如果你想要一個更嚴格的功能,你還可以嘗試使用hash()md5()函數來創建你的鑰匙,並要求它在你的gzdeflate()/gzinflate()功能的回報作爲什麼Leon的建議加密功能。