2013-10-23 45 views
1

我使用Encrypt類對codeigniter中的一些數據進行加密,並將其發送給java程序,並且需要在那裏進行解碼。CodeIgniter對java加密類

PHP代碼:

$this->load->library('encrypt'); 
    $this->encrypt->set_key(SERVER_ENCRYPT_KEY); 
    $this->encrypt->set_mode(MCRYPT_MODE_CFB); 
    $this->data = $this->encrypt->encode($this->input->post('data')); 

其中SERVER_ENCRYPT_KEY是關鍵。

我發現這個:MCrypt for Java但我無法使它工作。 還有其他的庫可以做到這一點?或者可能是一個示例如何使用Java版本的MCrypt來完成此操作。

回答

1

我決定避免使用CI_Encrypt,並使用這個PHP-Java-AES-Encrypt做一些小改動:添加噪音並使用兩種類型的鍵。此外,我還構建了一個工具將舊的加密數據轉換爲新格式。

1

看一看CI_Encrypt這個課。除了調用mcrypt庫之外,它還執行各種非標準的事情。作爲一個例子,它通過自己發明的_add_cipher_noise方法運行加密數據。此外,似乎加密格式已經改變了不同的版本 - 表明這可能會再次發生。

如果您打算使用codeignite之外的加密數據,則不應使用看起來像codeignites自己的mcrypt加密數據打包的代碼。

+0

我看到在加密時添加了噪音,我也對java也做了同樣的處理,但我想知道是否有人設法使用codeigniter之外的加密數據。我試圖避免要求+ 10k客戶重新輸入一些數據。但最終我最終可能會在雙方都採用自定義加密方法。 – adimoldovan

+0

請注意,您在codeigniter中從編碼調用中獲得的消息不是自包含的。在解密時,您需要事先知道使用什麼密碼進行加密。用戶可能使用過'$ this-> encrypt-> set_cipher();',並且不能從消息中扣除該值。另外,如果** mcrypt **不存在,則會回到其他一些方法 - 這也需要處理。 –

+0

默認值爲'MCRYPT_RIJNDAEL_256'用於密碼,'MCRYPT_MODE_CBC'用於mcrypt模式。另外還安裝了mcrypt。 – adimoldovan