openssl簡介
OpenSSL是一套用于SSL/TLS協(xié)議的加密工具
其作用有:
1.生成私有密鑰.
2.生成證書,即數(shù)字簽名證書,它包含一個公有密鑰,可以用來單向的加密和解密數(shù)據(jù).即,使用公鑰加密的數(shù)據(jù),只能使用 私有密鑰解密.使用私鑰加密的數(shù)據(jù),可以使用公鑰來解密.
那SSL/TLS協(xié)議又是什么?
SSL/TLS協(xié)議的基本思路是采用公鑰加密法,也就是說,客戶端先向服務(wù)器端索要公鑰,然后用公鑰加密信息,服務(wù)器收到密文后,用自己的私鑰解密。(引用文章地址:http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html )
這里還涉及到加密的一些基礎(chǔ)知識:對稱加密和非對稱加密。
對稱加密:發(fā)送者和接受者使用同一個密鑰,發(fā)送者使用密匙加密了文件,接收者使用同樣的密匙解密,獲取信息。常見的對稱加密算法有:des/aes/3des.
非對稱加密:使用一對相對的密匙,分為公匙和私匙,私匙自己安全保存,而將公匙公開。公鑰與私鑰是一對,如果用公鑰對數(shù)據(jù)進行加密,只有用對應(yīng)的私鑰才能解密;如果用私鑰對數(shù)據(jù)進行加密,那么只有用對應(yīng)的公鑰才能解密。發(fā)送數(shù)據(jù)前只需要使用接收方的公匙加密就行了。常見的非對稱加密算法有RSA/DSA
之前常用的MD5加密算法是非對稱,不可逆的加密。
PHP的openssl擴展
wamp是默認開啟openssl的,在linux系統(tǒng)下可能需要編譯安裝擴展。
一些常用函數(shù):
1、string openssl_encrypt ( string $data , string $method , string $password)
其中$data為其要加密的數(shù)據(jù),$method是加密要使用的方法,$password是要使用的密匙,函數(shù)返回加密后的數(shù)據(jù);
$method列表可以使用openssl_get_cipher_methods()來獲取。
2、openssl_public_encrypt(string $data , string &$crypted , mixed $key [, int $padding = OPENSSL_PKCS1_PADDING ] )
使用公匙加密數(shù)據(jù),其中$data是要加密的數(shù)據(jù);$crypted是一個引用變量,加密后的數(shù)據(jù)會被放入這個變量中;$key是要傳入的公匙數(shù)據(jù)