这个跟php没有关系,单纯的是两个密码学的算法。如果真想搞清楚区别,你需要有密码学的基础知识。
我简单说一下,这两个都是标准的密码学算法,应用广泛。AES是一个对称加密算法,常常用于对数据进行加密,RSA是一个非对称(公钥)加密算法,常常用于对AES加密用的密钥进行加密,或者进行数字签名等。
至于对称加密算法和非对称加密算法的区别说起来就越来越多了。你只要知道以下事实就好:
对称加密算法加解密密钥相同,而非对称加密算法加解密密钥不同
对称加密算法相对于非对称加密算法而言往往加解密速度很快
非对称加密算法具有任何有公钥的人都能加密数据,但是只有有私钥的人才能解密数据的特点
⑵ RSA加密解密网在PHP中.问题,怎么解决
举例:
function rsaSign($data,$private_key) { $res = openssl_get_privatekey($private_key); // $data=sha1($data); //sha1加密(如果需要的话,如果进行加密,则对方也要进行加密后做对比) openssl_sign($data, $sign, $res,OPENSSL_ALGO_SHA1);//加签,可以指定加密方式 openssl_free_key($res); //base64编码 $sign = base64_encode($sign); return $sign;}
⑶ 关于RSA加密算法请教 - PHP进阶讨论
公/钥成对出现,私钥加的密用公钥解,公解加的密用私钥解密。公钥一般用于加密,验证签名私钥一般用于签名签名的具体作法:? ?? ?首先将信息“***”通过散列算法计算后得到的报文摘要,然后通过私钥对摘要进行加密,后面签名有三种证书:建行CA认证中心的根证书、建行网银中心的服务器证书,每 个网上银行用户在浏览器端的客户证书。有了这三个证书,就可以在浏览器与建行网银服务器之间建立起SSL连接。这样,您的浏览器与建行网银服务器之间就有 了一个安全的加密信道。您的证书可以使与您通讯的对方验证您的身份(您确实是您所声称的那个您),同样,您也可以用与您通讯的对方的证书验证他的身份(他 确实是他所声称的那个他),而这一验证过程是由系统自动完成的。银行系统一般是:1. 用对方的公钥加密数据,对方收到后用自己的私钥解密;2. 用你自己的私钥签名数据,对方收到后用你自己的公钥验证签名。 网银在传递数据过程中要把”传递的数据“用自己的私钥进行签名,而且要把”传递的数据“用公钥进行加密客户端有自己的私钥和一个数字证书,其中私钥和服务器中的公钥成对,而且是数字证书中的公钥和服务器上的私钥成对匹配.过程如下:? ? (1)客户A准备好要传送的数字信息(明文)。 (2)客户A对数字信息进行哈希(hash)运算,得到一个信息摘要。 3)客户A用自己的私钥(SK)对信息摘要进行加密得到客户A的数字签名,并将其附在数字信息上。 4)客户A随机产生一个加密密钥(DES密钥),并用此密钥对要发送的信息进行加密,形成密文。 5)客户A用双方共有的公钥(PK)对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给乙。 6)银行B收到客户A传送过来的密文和加过密的DES密钥,先用自己的私钥(SK)对加密的DES密钥进行解密,得到DES密钥。 7)银行B然后用DES密钥对收到的密文进行解密,得到明文的数字信息,然后将DES密钥抛弃(即DES密钥作废)。 8)银行B用双方共有的公钥(PK)对客户A的数字签名进行解密,得到信息摘要。银行B用相同的hash算法对收到的明文再进行一次hash运算,得到一个新的信息摘要。 9)银行B将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。
⑷ 有谁知道php RSA加解密过程的来看一下
1、加米解米的第一步是生成公钥、私钥对,私钥加米的内容能通过公钥解米(反过来亦可以)下载开源RSA米钥生成工具openssl(通常Linux系统都自带该程序),解压缩至独立的文件夹,进入其中的bin目录,执行以下命令:
复制代码 代码如下:
openssl genrsa -out rsa_private_key.pem 1024openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pemopenssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem第一条命令生成原始 RSA私钥文件 rsa_private_key.pem,第二条命令将原始 RSA私钥转换为 pkcs8格式,第三条生成RSA公钥 rsa_public_key.pem从上面看出通过私钥能生成对应的公钥,因此我们将私钥private_key.pem用在服务器端,公钥发放给android跟ios等前端2、php中用生成的公钥、私钥进行加米解米,直接上代码复制代码 代码如下:
$fp=fopen("rsa/rsa_private_key.pem","r"); //你的私钥文件路径$private_key=fread($fp,8192);
fclose($fp);
$fp1=fopen("rsa/rsa_public_key.pem","r"); //你的公钥文件路径$public_key=fread($fp1,8192);
fclose($fp1);
//echo $private_key;
$pi_key=openssl_pkey_get_private($private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id$pu_key=openssl_pkey_get_public($public_key );//这个函数可用来判断公钥是否是可用的print_r($pi_key);echo "\n"; echo "<br>";
print_r($pu_key);echo "\n"; echo "<br>";
echo "<hr>";
$data='php ras加米算法';
$encrypted = "";
$decrypted = "";
echo "加米的源数据:".$data."\n"; echo "<br>";echo "private key encrypt:\n"; echo "<br>";openssl_private_encrypt($data,$encrypted,$pi_key);//私钥加米$encrypted = base64_encode($encrypted);//加米后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的echo '私钥加米后:'.$encrypted."\n"; echo "<br>";echo "<br>";echo "public key decrypt:\n"; echo "<br>";openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私钥加米的内容通过公钥可用解米出来echo '公钥解米后:'.$decrypted."\n"; echo "<br>";echo "<hr>";
echo "public key encrypt:\n"; echo "<br>";openssl_public_encrypt($data,$encrypted,$pu_key);//公钥加米$encrypted = base64_encode($encrypted);
echo $encrypted,"\n"; echo "<br>";
echo "private key decrypt:\n"; echo "<br>";openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私钥解米echo $decrypted,"\n"; echo "<br>";
PHP的RSA配置常见问题:
●PHP开发语言的代码示例中openssl文件夹中的3个DLL文件用法1、如果你的系统是windows系统,且system32文件目录下没有libeay32.dll、ssleay32.dll这两个文件那么需要拷贝这两个文件到system32文件目录。
2、如果您的php安装目录下(php\ext)中没有php_openssl.dll那么请把php_openssl.dll放在这个文件夹中
喜欢加米解米的小伙伴一定要好好看看这篇文章,受益匪浅。。。
?
⑸ php rsa公钥加密的问题!
公钥不对,你检查一下,或者是常量的问题
⑹ php实现rsa算法,该怎么处理
php服务端与客户端交互、提供开放api时,通常需要对敏感的部分api数据传输进行数据加密,这时候rsa非对称加密就能派上用处了,下面通过一个例子来说明如何用php来实现数据的加密解密
加密的第一步是生成公钥、私钥对,私钥加密的内容能通过公钥解密(反过来亦可以)
下载开源RSA密钥生成工具openssl(通常Linux系统都自带该程序),解压缩至独立的文件夹,进入其中的bin目录,执行以下命令:
opensslgenrsa-outrsa_private_key.pem1024
opensslpkcs8-topk8-informPEM-inrsa_private_key.pem-outformPEM-nocrypt-outprivate_key.pem
opensslrsa-inrsa_private_key.pem-pubout-outrsa_public_key.pem
⑺ php openssl rsa 加密长度大于117,返回false,无法加密,求解决办法
把你自己的字符串分开,每100个字符串成一个,然后分开加密相连,解密的时候也是如此