openssl简介
OpenSSL是一套用于SSL/TLS协议的加密工具
其作用有:
1.生成私有密钥.
2.生成证书,即数字签名证书,它包含一个公有密钥,可以用来单向的加密和解密数据.即,使用公钥加密的数据,只能使用 私有密钥解密.使用私钥加密的数据,可以使用公钥来解密.
那SSL/TLS协议又是什么?
SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。(引用文章地址:http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html )
这里还涉及到加密的一些基础知识:对称加密和非对称加密。
对称加密:发送者和接受者使用同一个密钥,发送者使用密匙加密了文件,接收者使用同样的密匙解密,获取信息。常见的对称加密算法有:des/aes/3des.
非对称加密:使用一对相对的密匙,分为公匙和私匙,私匙自己安全保存,而将公匙公开。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。发送数据前只需要使用接收方的公匙加密就行了。常见的非对称加密算法有RSA/DSA
之前常用的MD5加密算法是非对称,不可逆的加密。
PHP的openssl扩展
wamp是默认开启openssl的,在linux系统下可能需要编译安装扩展。
一些常用函数:
1、string openssl_encrypt ( string $data , string $method , string $password)
其中$data为其要加密的数据,$method是加密要使用的方法,$password是要使用的密匙,函数返回加密后的数据;
$method列表可以使用openssl_get_cipher_methods()来获取。
2、openssl_public_encrypt(string $data , string &$crypted , mixed $key [, int $padding = OPENSSL_PKCS1_PADDING ] )
使用公匙加密数据,其中$data是要加密的数据;$crypted是一个引用变量,加密后的数据会被放入这个变量中;$key是要传入的公匙数据