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

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

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. Spark配置参数的三种方式

    1.Spark 属性Spark应用程序的运行是通过外部参数来控制的,参数的设置正确与否,好与坏会直接影响应用程序的性能,也就影响我们整个集群的性能.参数控制有以下方式:(1)直接设置在SparkCon ...

  2. Bean的装配

    1.可以从ApplicationContext上下文获取和bean工厂获取容器,bean工厂只建议在移动端应用使用. 2.如果使用的是applicationContext配置的是bean,如果作用域是 ...

  3. WeakHashMap介绍

    WeakHashMap简介 WeakHashMap 继承于AbstractMap,实现了Map接口.    和HashMap一样,WeakHashMap 也是一个散列表,它存储的内容也是键值对(key ...

  4. ES6的新特性(6)——正则的扩展

    正则的扩展 RegExp 构造函数 在 ES5 中,RegExp构造函数的参数有两种情况. 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag). var regex = ne ...

  5. MySql 8 命令

    1-创建用户 create user 用户名@'%' identified by '密码'; create user 用户名@'localhost' identified by '密码';   2-授 ...

  6. Codeforces Round #345 (Div. 1) C. Table Compression dp+并查集

    题目链接: http://codeforces.com/problemset/problem/650/C C. Table Compression time limit per test4 secon ...

  7. 关于在eclipse Oxygen 2017环境下spring3.2 asm的异常

    今天在oxygen 2017下构建spring3.2+mybatis项目时,发生异常,大概是说无法解析我mapper.class文件,错误发生在core.asm中<unknow:source&g ...

  8. Thrift语法参考

    1.Types Thrift类型系统包括预定义基本类型,用户自定义结构体,容器类型,异常和服务定义 (1) 基本类型 bool: 布尔类型,占一个字节 byte: 有符号字节 i16:16位有符号整型 ...

  9. rfid工作原理

    RFID的工作原理是:标签进入磁场后,如果接收到阅读器发出的特殊射频信号,就能凭借感应电流所获得的能量发送出存储在芯片中的产品信息(即Passive Tag,无源标签或被动标签),或者主动发送某一频率 ...

  10. 【Nginx】转:Nginx try_files

    原来的配置是这样的: location / { try_files $uri $uri/ /index.php; index index.html index.htm index.php; } loc ...