还需要注意的是加密字符串长度问题,如果加密字符串长度太长需要进行分段加解密,如下代码:

加密:(公匙加密,私密一般用来解密)

function encrypt($originalData){
$publicKeyFilePath = '/www/ceshi/rsa_public_key.pem';
extension_loaded('openssl') or die('php需要openssl扩展支持');
file_exists($publicKeyFilePath) or die('公钥的文件路径不正确');
$publicKey = openssl_pkey_get_public(file_get_contents($publicKeyFilePath));
$publicKey or die('公钥不可用');
$crypto = '';
foreach (str_split($originalData, 117) as $chunk) {
$encryptData = '';
if(openssl_public_encrypt($chunk, $encryptData, $publicKey)){
$crypto .= $encryptData;
}else{
die('加密失败');
}
}
return base64_encode($crypto);
}

解密:

function decrypt($encryptData){
$privateKeyFilePath = '/www/ceshi/rsa_private_key.pem';
extension_loaded('openssl') or die('php需要openssl扩展支持');
file_exists($privateKeyFilePath) or die('密钥的文件路径不正确');
$privateKey = openssl_pkey_get_private(file_get_contents($privateKeyFilePath));
$privateKey or die('密钥不可用');
$decryptData = '';
$crypto = '';
foreach (str_split(base64_decode($encryptData), 128) as $chunk) {
if(openssl_private_decrypt($chunk, $decryptData, $privateKey)){
$crypto .= $decryptData;
}else{
die('解密失败');
} }
return $crypto;
}

调用:

$aa = encrypt('aa');
$bb = decrypt($aa);
var_dump($bb);
输出的结果为:aa

php7实现基于openssl的加密解密方法的更多相关文章

  1. C#开发中常用的加密解密方法

    转载自:https://www.cnblogs.com/bj981/p/11203711.html C#开发中常用的加密解密方法 相信很多人在开发过程中经常会遇到需要对一些重要的信息进行加密处理,今天 ...

  2. vb.net加密解密方法

    1.vb.net加密解密方法 Private Function getLicenseDate() As String Dim b() As Byte Dim path As String = Serv ...

  3. ASP.NET常用加密解密方法

    ASP.NET常用加密解密方法 一.MD5加密解密 1.加密 C# 代码           public static string ToMd5(string clearString)        ...

  4. ios常见加密解密方法

    在其他平台中经常会计算MD5值,在iOS平台中也提供了该方法,首先需要导入头文件 #import <CommonCrypto/CommonDigest.h> 方法CC_MD5可以获取MD5 ...

  5. C#/IOS/Android通用加密解密方法

    原文:C#/IOS/Android通用加密解密方法 公司在做移动端ios/android,服务器提供接口使用的.net,用到加密解密这一块,也在网上找了一些方法,有些是.net加密了android解密 ...

  6. 2019-2-20C#开发中常用加密解密方法解析

    C#开发中常用加密解密方法解析 一.MD5加密算法 我想这是大家都常听过的算法,可能也用的比较多.那么什么是MD5算法呢?MD5全称是 message-digest algorithm 5[|ˈmes ...

  7. Java实现一个简单的加密解密方法

    Crypto是Java语言写的一个简单的加密解密方法. 使用方法: 加密方法 String cipherte=Enande.encrypt(content, pass): 解密方法 Enande.de ...

  8. PHP加密解密方法

    加密解密方法 //字符串解密加密 function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { $ckey_l ...

  9. Javascript实现base64的加密解密方法

    1 function Base64() { 2 // private property 3 _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl ...

随机推荐

  1. hdfs向hbase上传数据报错分析

    通过hbse的import工具向hbase导入文件时出现出错误: hbase org.apache.hadoop.hbase.mapreduce.Driver import hbase_rgrid_k ...

  2. 启动sshd时,报“Could not load host key”错

    原文发表于cu:2016-05-24 现象:启动sshd服务时,虽看似服务启动成功,但客户端并不能连接上sshd服务器端.如下: [root@aefe8007a17d ~]# /usr/sbin/ss ...

  3. openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 四

    openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...

  4. 【Pthon入门学习】99乘法表

    学习知识点: 1. string.join(seq): 以string字符串作为分隔符,将seq的所有元素拼接成一个新的字符串 s = ['%d * %d = %d' % (y, 4, 4*y) fo ...

  5. [笔记] FreeBSD使用小技巧

    非交互式添加用户 sed直接修改文件 sed -i '' 's/a/b/' file sed添加一行 sed '1a\ newline' file sed '1s/.*/&\'$'\nnewl ...

  6. “Hello World!”团队第十三次会议

    今天是我们团队“Hello World!”团队召开的第十三次会议.博客内容: 一.会议时间 二.会议地点 三.会议成员 四.会议内容 五.todo list 六.会议照片 七.燃尽图 一.会议时间 2 ...

  7. ubuntu关闭系统自动检测错误

    sudo gedit /etc/default/apport 将enabled=1 改成 enabled=0

  8. String、StringBuilder与StringBuffer的区别

    1.String类是public.final修饰的. 在Java中,被final修饰的类是不允许被继承的,并且String它的成员方法都默认为final方法. 查看源码得知,String类其实是通过c ...

  9. 课堂学习Scrum站立会议

    项目名称:连连看游戏 小组成员:张政,张金生,李权,武志远 Master:张政 站立会议内容 1.已完成的内容 windows下的基本用户页面,实现了多个BUTTON下7*12的页面布局,但是出现了b ...

  10. 使用selenium遍历frame中的表单信息 ;

    遍历frame中的表单 : package webDriverPro; import java.util.List; import java.util.regex.Matcher; import ja ...