2013-08-19 35 views
1

我有一個PHP驅動的Web表單,我希望能夠輸入密碼,對其進行加密並將其加載到數據庫中。然後,使用Python查詢該密碼,將其解密,然後使用它通過SMTPLIB向Microsoft Exchange電子郵件服務器進行身份驗證。其餘的認證信息將以純文本形式存儲。我的主要目標是不以純文本存儲密碼。跨語言可逆加密(PHP,Python)

我試圖使用這兩種語言的唯一原因是我的程序的'工作'的其餘部分是在Python中完成的。我只使用PHP進行簡單的界面。這只是爲了一致。

是否有一個簡單易用的跨語言可逆加密庫可用於此?

在PHP中製作電子郵件腳本會更好嗎?如果是這種情況,會爲這項任務推薦圖書館?

+0

雖然我無法評論跨語言可逆加密,但我可以確認在php中發送電子郵件很容易,並且不需要庫 - 請參閱mail()函數:http://php.net /manual/en/function.mail。php 您可以使用第四個參數指定標題,並且可以發送HTML代碼(請參閱文檔頁面上的示例#4)。 – IanPudney

+0

所有流行的加密algorythms描述standarts。不同的語言具有相同的最終實現。例如,md5哈希將是相同的,併爲PHP和Python。不管你使用哪種語言。 – Denis

+0

你可以在數據庫層而不是應用層中加密它嗎?這裏沒有足夠的具體信息,至於你在做什麼,給出更全面的答案。 – CD001

回答

0

如果您需要需要來讀取密碼,請在數據庫層而不是應用層進行加密 - 只需確保您連接到數據庫在本地或通過SSL。

存儲密碼的步驟是這樣的:

  • 電腦>>
  • HTTPS >>
  • Web服務器(PHP形式)>>
  • (HTTPS如果在不同的服務器>>)
  • 數據庫(AES加密)

根據數據庫您使用的語法可能會改變,但使用MySQL,你可以這樣做:

INSERT INTO `table` (`password`) 
VALUES (AES_ENCRYPT('{$sPassword}', '{$sEncryptionKey}')) 

由於PHP寫這封信,你可以使用一個PDO準備語句在那裏得到的數據的數據庫.. 。

當您Python腳本找回密碼你只需要的東西,如SQL服務器上運行SELECT語句(假設數據是在AES加密BLOB)這樣的:

SELECT CONVERT(AES_DECRYPT(`table`.`password`, '{$sEncryptionKey}') USING 'utf8') 
AS `password` 

這種方式只有 PHP和Python之間需要的常用數據是加密密鑰(它只是一個字符串)。只要您在Internet上傳遞此數據時保持SSL連接,您就應該可以。