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

  公钥加密
    $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. 利用iframe将div放置在object的上面

    这两天在写一个用object上传照片的网页,在上传时,需要弹出一个进度条的div,我就按照正常的思维模式,将进度条div设为绝对定位,将其z-index设置的很大,结果,进度条div被object给遮 ...

  2. 李洪强漫谈iOS开发[C语言-046]-统计输入字符个数

  3. zend studion实现自动换行

    真是学一门语言不仅有学语言的阻碍,同时还有编写代码工具的障碍,zend studion的自动换行问题 zend studion默认的是不会自己换行,百度查找后找到了如下个方法: 实现: 菜单" ...

  4. Save vtkImageData to BMP Image 保存vtkImageData为图片

    在VTK中,我们有时候想要保存vtkImageData类的变量到一幅图片,可以使用如下的实例代码: #include <vtkBMPReader.h> #include <vtkBM ...

  5. VTK GetScalarPointer() and GetScalarComponentAsFloat() not work

    I am using VTK 5.10.1 with VS 2010, and the following example does not work on my machine: http://ww ...

  6. jq遍历url判断是否为当前页面然后给导航上色

    举例:我们希望在此页面点击“我的头像”从而加亮它的背景颜色,跟“我的爱好”的背景颜色一样. 之前: 之后: 我是这样实现的:通过判断当前url是否存在某字段,遍历字段所在的位置给加上相应的样式,我这么 ...

  7. php内网探测脚本&简单代理访问

    <?php $url = isset($_REQUEST['u'])?$_REQUEST['u']:null; $ip = isset($_REQUEST['i'])?$_REQUEST['i' ...

  8. xss如何加载远程js的一些tips

    在早期 , 对于xss我们是这样利用的 <script>window.open('http://xxx.xxx/cookie.asp?msg='+document.cookie)</ ...

  9. SubmitText 中配置lua 运行环境

    一 新建编译系统 二.使用新建的编译系统 三配置 { "cmd": ["lua", "$file"], "file_regex&q ...

  10. IOS第二天多线程-01-延时执行

    **********延时执行 #import "HMViewController.h" @interface HMViewController () @end @implement ...