記錄這兩天遇到的一些問題,一開始主要是對一些概念理解的不清楚
比如aes是一種演算法,而openssl是乙個擴充套件庫,其中包含對aes演算法的實現
當然在完全理解演算法後可以自己實現,但可能會遇到很多問題,我會在以後進行嘗試
目前在專案的使用中,還是使用擴充套件庫的方法最快最簡單
1,加密方法:
通用的單鑰加密演算法為des(data encryption standard),通用的雙鑰加密演算法為rsa( rivest-shamir-adleman),都產生於上個世紀70年代。
目前用aes來代替des(都是單鑰)。
我選擇使用aes演算法來進行加密。
2,簡單了解aes:
aes 有三種演算法,主要是對資料塊的大小存在區別:
aes-128:需要提供 16 位的金鑰
aes-192:需要提供 24 位的金鑰
aes-256:需要提供 32 位的金鑰
aes 是按資料塊大小(128/192/256)對待加密內容進行分塊處理的,會經常出現最後一段資料長度不足的場景,這時就需要填充資料長度到加密演算法對應的資料塊大小。
3,實現方式:
aes本質是演算法,下面需要想辦法實現。
在php中,如果不自己實現演算法的話,有兩種方式可以呼叫aes演算法進行加密
乙個是mcrypt,乙個是openssl
(php在7.2版本已經完全移除了mcrypt加密;php的openssl擴充套件已經實現了aes加密演算法,我們可以通過openssl擴充套件提供的方法實現對資料的加密和解密)
我們選擇openssl
4,在php中加入openssl擴充套件
因為還沒有嘗試linux的openssl安裝,故這裡只記錄window的成功安裝方式。
步驟:1: 首先檢查php.ini中;extension=php_openssl.dll是否存在, 如果存在的話去掉前面的注釋符『;', 如果不存在這行,那麼新增extension=php_openssl.dll。
2: 講php資料夾下的: php_openssl.dll, ssleay32.dll, libeay32.dll 3個檔案拷貝到 windows\system32\ 資料夾下。(注:所在子目錄可能有所不同)
3: 重啟apache或者iis(iisreset /restart)
至此,openssl功能就開啟了。
5,新增範例**:
如下:(作者來自思否captainblue)
1class
aes_128_cw 910
public
function decode($secretdata)13
14public
function encode($data
)17 }
6,進行測試
本地環境php版本是5.6.9,phpstudy 8.1
就是這樣
修改後可以將該類放入專案的擴充套件類庫,進行公共使用,或是以中介軟體的方式進行通訊加密,以後更新這部分。
php使用openssl來實現非對稱加密
使用非對稱加密主要是借助openssl的公鑰和私鑰,用公鑰加密私鑰解密,或者私鑰加密公鑰解密。1.安裝openssl和php的openssl擴充套件 2.生成私鑰 openssl genrsa 用於生成rsa私鑰檔案,生成是可以指定私鑰長度和密碼保護 plain view plain copy op...
php使用openssl來實現非對稱加密
使用非對稱加密主要是借助openssl的公鑰和私鑰,用公鑰加密私鑰解密,或者私鑰加密公鑰解密。1.安裝openssl和php的openssl擴充套件 2.生成私鑰 openssl genrsa 用於生成rsa私鑰檔案,生成是可以指定私鑰長度和密碼保護 openssl genrsa out rsa p...
php使用openssl來實現非對稱加密
使用非對稱加密主要是借助openssl的公鑰和私鑰,用公鑰加密私鑰解密,或者私鑰加密公鑰解密。1.安裝openssl和php的openssl擴充套件 2.生成私鑰 openssl genrsa 用於生成rsa私鑰檔案,生成是可以指定私鑰長度和密碼保護 openssl genrsa out rsa p...