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

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

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. 1.6 JAVA高并发之线程池

    一.JAVA高级并发 1.5JDK之后引入高级并发特性,大多数的特性在java.util.concurrent 包中,是专门用于多线程发编程的,充分利用了现代多处理器和多核心系统的功能以编写大规模并发 ...

  2. flask_sqlalchemy介绍

    快速入门 Flask-SQLAlchemy 使用起来非常有趣,对于基本应用十分容易使用,并且对于大型项目易于扩展.有关完整的指南,请参阅 SQLAlchemy 的 API 文档. 一个最小应用 常见情 ...

  3. sql脚本创建用户角色权限表

    /******************************************/ /* 名称:权限管理 */ /* 编写日期:2010.5.20 */ /* 开发者:dangqinghua * ...

  4. 转载笔记:DropDownList无限级分类(灵活控制显示形式)

    主要使用递归实现,数据库结构: 最终样式:  1protected void Page_Load(object sender, EventArgs e) 2    { 3        if (!Pa ...

  5. 项目进行ing

    1.我们的看板 2.立行会议 (1)照片 (2)时间:每天20:00 (3)地点:学校研发中心会议室 3.看板进展: 已有6个任务被移到Check Out栏中,详细情况如下: 梁植淋:构建项目架构,封 ...

  6. 第二章:Internet地址结构

    引言 本章主要介绍了: 如何为Internet中的设备分配IP地址. 有助于理由可扩展性的地址结构分配方式. 特殊用途的地址. 表示IP地址 IPv4地址 长32位,采用点分四组或点分十进制来表示. ...

  7. lintcode-107-单词切分

    107-单词切分 给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词. 样例 给出 s = "lintcode" dict = [" ...

  8. DNS测试工具的使用(了解)

    dig命令, host命令, nslookup命令,rndc命令 dig命令(直接测试DNS性能,不会查询/etc/hosts文件) dig [-t RR_TYPE] name [@SERVER] [ ...

  9. 2nd 词频统计效能测试

    词频统计效能测试 使用性能分析工具分析结果如下 :

  10. Struts2拦截器配置和使用

    拦截器是Struts2最强大的特性之一,它是一种可以让用户在Action执行之前和Result执行之后进行一些功能处理的机制. 说到拦截器interceptor,就会想到过滤器filter: 过滤器f ...