加密的内容长度限制为密钥长度少位,如位的密钥最多加密的内容为个长度。

  公钥加密
    $public_content=file_get_contents(公钥路径);
    $public_key=openssl_get_publickey($public_content);
    
    $original_str='待加密的内容';
    $original_arr=str_split($original_str,117);  //折分
    foreach($original_arr as $o)
    {
      $sub_enc=null;
      openssl_public_encrypt($o,$sub_enc,$public_key);
      $original_enc_arr[]=$sub_enc;
    }
    openssl_free_key($public_key);
    $original_enc_str=base64_encode(implode('',$original_enc_arr));//最终网络传的密文
  私钥解密
    $private_content=file_get_contents(私钥路径);
    $private_key=openssl_get_privatekey($private_content);

    $original_enc_str=base64_decode(密文);
    $orig_dec_str='';
    for($i=0;$i<strlen($original_enc_str)/128;$i++)
    {
       $data=substr($original_enc_str,$i*128,128);
       openssl_private_decrypt($data,$decrypt,$private_key);
       $orig_dec_str.=$decrypt;
    }
    $orig_dec_str为最后解密出来的。

  注:私钥加密及公钥解密同理。
-----------------------------------------------------------------------------------------------------------------------
  私钥签名
    $private_content=file_get_contents(私钥路径);
    $private_key=openssl_get_privatekey($private_content);

    $original_str='';//原数据
    openssl_sign($original_str,$sign,$private_key);
    openssl_free_key($private_key);
    $sign=base64_encode($sign);//最终的签名    

  公钥验签
    $public_content=file_get_contents(公钥路径);
    $public_key=openssl_get_publickey($public_content);

    $sign=base64_decode($sign)'';//得到的签名
    $original_str='';得到的数据
    $result=(bool)openssl_verify($original_str,$sign,$public_key);
    openssl_free_key($public_key);
    $result为真时签验通过,假时未通过

    

php中rsa加密及解密和签名及验签的更多相关文章

  1. RSA加密、解密、签名、验签的原理及方法

    一.RSA加密简介 RSA加密是一种非对称加密.可以在不直接传递密钥的情况下,完成解密.这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险.是由一对密钥来进行加解密的过程,分别称为公钥和私 ...

  2. php rsa 加密、解密、签名、验签

    由于对接第三方机构使用的是Java版本的rsa加解密方法,所有刚开始在网上搜到很多PHP版本的rsa加解密,但是对接java大多都不适用. 以下php版本是适用于对接java接口,java适用密钥再p ...

  3. 密码基础知识(2)以RSA为例说明加密、解密、签名、验签

    密码基础知识(1)https://www.cnblogs.com/xdyixia/p/11528572.html 一.RSA加密简介 RSA加密是一种非对称加密.是由一对密钥来进行加解密的过程,分别称 ...

  4. python RSA加密、解密、签名

    python RSA加密.解密.签名 python中用于RSA加解密的库有好久个,本文主要讲解rsa.M2Crypto.Crypto这三个库对于RSA加密.解密.签名.验签的知识点. 知识基础 加密是 ...

  5. C#实现RSA加密与解密、签名与认证(转)

    一.RSA简介 RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有影响力 ...

  6. C#实现RSA加密与解密、签名与认证

    一.RSA简介 RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有影响力 ...

  7. .NET RSA解密、签名、验签

    using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Sec ...

  8. RSA加密、解密、签名、校验签名

    先说下RSA概率: 公钥和私钥是通过本地openssl软件生成. 正常: 公钥加密=>私钥解密: 私钥签名=>公钥校验签名 最近做一个项目,对方用java公钥去校验签名,这边java的De ...

  9. RSA公钥、私钥、签名和验签

    1 RSA加密算法介绍 RSA又叫非对称加密算法,这类加密算法有一对秘钥,其中一个用来加密一个用来解密.这一对秘钥中你可以选择一个作为私钥(自己保存),另一个作为公钥(对外公开).用私钥加密的内容只能 ...

随机推荐

  1. pthread_creat()解析及需注意的地方

    函数声明 int pthread_create(pthread_t*restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn ...

  2. call与apply基础用法告诉你

    Js用法中还有个极好的但是有些抽象的用法——call与apply,今天我要简单总结一下: var ob1={ //对象ob1 name:"ob1", func1:function( ...

  3. div半透明背景,文字不透明

    background: rgba(255, 255, 255, 0.8) !important; /* IE无效,FF有效 */ background: #fff; filter: alpha(opa ...

  4. HDU1257

    最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  5. [转]Oracle版本号解释

    注意: 在oracle 9.2 版本之后, oracle 的maintenance release number 是在第二数字位更改. 而在之前,是在第三个数字位. 1. Major Database ...

  6. linux 解压xz包

    1.下载xz包 http://tukaani.org/xz/xz-4.999.9beta.tar.bz2   2.解压安装包 $tar -jxvf xz-4.999.9beta.tar.bz2   3 ...

  7. 台式机的集显HD4600驱动-黑苹果之路

    台式机的集显HD4600驱动-黑苹果之路 半桶水还真可怕,整了一个礼拜的台式机黑苹果,竟然都没搞定asus z87-k的HD4600核显.最终为了不耽误工作,上淘宝,花钱买服务.显卡驱动分为变色龙和c ...

  8. xib连线出错,模型保存cell状态(最后个Cell隐藏分割线),

    一个.m文件中有好几个cell类,拖线,要看看该控件对应的是哪个类,否则点击事件不响应,因为归属的xib错了 拖不过来线,因为是view拖不动,加了个button就行了   使用模型属性记录是否隐藏c ...

  9. http://highscalability.com/blog/2015/5/18/how-mysql-is-able-to-scale-to-200-million-qps-mysql-cluster.html

    http://highscalability.com/blog/2015/5/18/how-mysql-is-able-to-scale-to-200-million-qps-mysql-cluste ...

  10. 转载:GridControl使用技巧

    一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 (1).gridView.AddN ...