1.简介RSA
RSA算法是一种极具影响力的非对叫作加密算法,已被ISO举荐为公钥数据加密标准,是迄今被科研最广泛的公钥算法,被广泛认为是最优秀的公钥方法之一。从诞生迄今经历了各样攻击考验,迄今无显现任何靠谱的破解该算法的方式,只要钥匙的长度足够长,用RSA加密的信息实质上是很难被破解的,加之该算法易于理解和操作,被业界人士广泛运用[1]。
RSA算法需产生两个密钥:公钥(publickey)和私钥(privatekey)。公钥与私钥不一致且必要成对显现,其中一个密钥用来加密,对应的另一个密钥用来解密,通常习惯运用公钥加密私钥解密。
公钥和私钥常用openssl命令行生成,这种操作比较繁杂。这里举荐能够供给在线生成RSA密钥对的工具,该工具能够供给pkcs#1格式及pkcs#8格式的密钥对。生成密钥位数能够是512位(bit)、1024位(bit)、2048位(bit)、4096位(bit)四种, 其网址为http://web.chacuo.net/netrsakeypair,通常在程序设计中,生成密钥位数可选取“1024位(bit)”,密钥格式可选取“pkcs#8格式”。
2.PHP对POST或GET传输数据进行加密
2.1开启PHP的openssl模块
openssl模块运用关联函数来生成证书及加密解密数据。首要查看该模块是不是已然开启,查看的办法是在php程序中执行“phpinfo();”语句,或在phpstudy等工具中单击“查看phpinfo”,查询“openssl”,倘若有则没需再做操作,倘若无就必须启用该模块。启用办法是打开php.ini配置文件,在文中查询“openssl”,删除“extension=php-openssl.dll”之前的分号,保留配置文件就可。
生成公钥和私钥对
到链接位置http://web.chacuo.net/netrsakeypair打开网站,单击“生成密钥对(RSA)”按钮,就会生成一对独一的密钥,每单击一次该按钮,就会生成区别的密钥对。
复制生成的公钥及私钥,在程序中分别保留为两个常量,框架代码如下:
<?php
define("RSA_public","-----BEGIN PUBLIC KEY-----
。。。
-----END PUBLIC KEY-----
");
define("RSA_private","-----BEGIN PRIVATE KEY-----
。。。
-----END PRIVATE KEY-----");
?>
因为生产的密钥比较长,为增多程序可读性,将此段代码保留成一个文件,如“config.php”,方便后续在主程序中运用require命令包括此代码段
2.2编写加密解密函数
编写加密解密函数方便后续程序调用,此处函数名命名为RSA-Openssl,该函数应有两个参数,一个是加密或解密的串,一个是决定加密还是解密操作。此处当$type=′encode′为加密操作,当$type==′decode′时为解密操作。
若进行加密操作,则首要检测生成的公钥,并运用公钥加密数据。运用openssl_pkey_get_public()函数检测生成的公钥是不是可用。倘若不可用,检测是不是密钥复制操作有误;倘若可用,再运用openssl_public_encrypt()函数对必须加密的数据进行加密,代码如下:
if ($type==encode) {
$return=openssl_pkey_get_public(RSA_public);//检测公钥是不是可用
if(!$return){
die("公钥不可用");
}
openssl_public_encrypt($data,$crypted,$return);//运用公钥加密数据
$crypted=base64_encode($crypted);
return $crypted;
}
代码中为防止运行结果显现乱码,因此运用了base6
|