RSA加密解密(PHP Demo)

2023-05-16

$private_key = '-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDpoODVtnSztGyb//p+g/Ob36jb3jzWzS2qovOjpY/rrTjwlVcQ
pB2m1nZDQNpTFsG8ZBl7uPw3M81lr7NRRn6tY7Om8tbOOsRgY6u0xwbgdRStFFvw
PzZ1HehiQ6WB8za8cucCyvuqmBRp7HOjO4Aa9t0rIvZ/hoWMeSvjnAVbMwIDAQAB
AoGBAOEHsaiIDs6NKdP08r1rsXjhLI9i92zawnLKdCybKw4RknfBENSZj2oExnKv
A9vmXoNsU1NlcaJmRh/85ZaSdS4L+Zx8iz18uwXAjCPpfMd7nG4FD55713Lszhua
DQIxK06w2mI0ytwEf4cqQmct2/BWchBXZIlz9O0Q70CF2brpAkEA/3NtHrQNxbF0
KRvrrTw4c9Y76PyeESEmKuF8ZKQu6v1qSb/V3aZsiGPTH+vUf0oAmoJoGx1AtRuk
DAe9uQ5efQJBAOohcXTh7vgm5ujlyJEi85jGp2BnHxmNAHN6n1q44Hs1wbvICujH
SEaHhVt6hSf7/NXnGOtJXve0JIt5glvCX28CQCa1jASKDkg10r9j/ruak4diIGP2
29EGr+zxjFMH2iA71H5mdncHAA1O6zA8IVBEm4DOYA4zyZloHdzA04wWVFUCQQDY
9+cJVvq6smpYN+E3RrmRwb6IYuf6KKXbXi5gx2UYKQgA+e/KKis7WQlnbdIJ7MYw
f7mjCVpdmG4pZpA8cpM3AkAFRUXYKlxLusKBRDZSDCyCUzP/Y3ql/qWXOqcA5Brj
pj+cofEWd/jZqD3drFjDGvccFmTfEAVmXWxCnJAZU2cW
-----END RSA PRIVATE KEY-----';
 
$public_key = '-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpoODVtnSztGyb//p+g/Ob36jb
3jzWzS2qovOjpY/rrTjwlVcQpB2m1nZDQNpTFsG8ZBl7uPw3M81lr7NRRn6tY7Om
8tbOOsRgY6u0xwbgdRStFFvwPzZ1HehiQ6WB8za8cucCyvuqmBRp7HOjO4Aa9t0r
IvZ/hoWMeSvjnAVbMwIDAQAB
-----END PUBLIC KEY-----';
 
//echo $private_key;
$pi_key =  openssl_pkey_get_private($private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id
$pu_key = openssl_pkey_get_public($public_key);//这个函数可用来判断公钥是否是可用的
print_r($pi_key);echo "\n";
print_r($pu_key);echo "\n";
 
 
$data = "123";//原始数据
$encrypted = "";
$decrypted = "";
 
echo "source data:",$data,"\n";
 
echo "private key encrypt:\n";
 
openssl_private_encrypt($data,$encrypted,$pi_key);//私钥加密
$encrypted = base64_encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的
echo $encrypted,"\n";
 
echo "public key decrypt:\n";
 
openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私钥加密的内容通过公钥可用解密出来
echo $decrypted,"\n";
 
echo "---------------------------------------\n";
echo "public key encrypt:\n";
 
openssl_public_encrypt($data,$encrypted,$pu_key);//公钥加密
$encrypted = base64_encode($encrypted);
echo $encrypted,"\n";
 
echo "private key decrypt:\n";
openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私钥解密
echo $decrypted,"\n";

密钥采用openssl工具生成,命令:

教程:https://blog.csdn.net/haibo0668/article/details/81369607

1. 生成 rsa 私钥
openssl genrsa -out rsaprivatekey.pem 1024
2. 生成对应的公钥
openssl rsa -in rsaprivatekey.pem -pubout -out rsapublickey.pem
3. 将 RSA 私钥转换成 PKCS8 格式,
openssl pkcs8 -topk8 -inform PEM -in rsaprivatekey.pem -outform PEM -nocrypt -out
rsaprivatepkcs8.pem

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RSA加密解密(PHP Demo) 的相关文章

随机推荐

  • Mysql如何高效的迁移到Redis

    1 需求 前端任务需要将几百万数据某几个关键字段组合成字符串从mysql导入redis 列表中 xff0c 发现网上大都数linux 以及 redis为key value形式的hash值 xff0c 而我需要的是字符串列表 xff0c 找不
  • 数据库

    set password for root 64 localhost 61 password 39 123456 39 grant all privileges on to root 64 39 39 identified by 34 12
  • git ssh 使用

    git config global user name 34 xxxxx 34 git config global user emall 34 xxxxx 64 qq net 34 ssh keygen t rsa C 34 xxxxx 6
  • MapReduce遇到java.lang.UnsatisfiedLinkError: boolean org.apache.hadoop.io.nativeio.NativeIO$Windows.ac

    解决方法 把Hadoop的bin目录下的文件复制到windows system32下 1 系统环境变量配置HADOOP HOME xff0c 并且添加进path 变量里 xff1b 2 HADOOP HOME bin 里是否有hadoop
  • 遍历JSONObject、JSONArray (适用任意复杂结构类型)

    多数时候 xff0c 我们可能只需要获取JSONObject里的某个键值对 xff0c 但有时候 xff0c 我们需要遍历整个JSONObject对象 本文用的是alibaba的fastjson xff0c 如果没有用过fastjson x
  • 【gRPC】自签CA、服务端和客户端双向认证

    前言 在上一篇文章Protobuf中间文件介绍 使用 Go新版本TLS证书认证问题中 xff0c 我们简单使用了grpc的单项认证 xff0c 客户端和服务端使用的证书都是由ca证书签发给服务端的 xff0c 在本文中 xff0c 我们进行
  • git 远程代码回滚master

    一 本地回滚 git reset 回退内容到上一个版本 就像现在的自己为成年人 xff0c 想要回退到童年 xff0c 直接用gitreset命令 xff0c 直接回退到小时候 git reset hard 22f8aae 22f8aae
  • Springboot 解决跨域的四种姿势

    实现 WebMvcConfigurer addCorsMappings 的方法 import org springframework context annotation Configuration import org springfra
  • mysql按某一字段分组取最大(小)值所在行的数据

    表结构脚本 xff1a CREATE TABLE 96 student grade 96 96 id 96 int 11 NOT NULL AUTO INCREMENT 96 name 96 varchar 64 DEFAULT NULL
  • 打包jar读不到.jks文件解决方法

    Maven 仓库获取地址 xff1a http mvnrepository com artifact commons io commons io lt https mvnrepository com artifact commons io
  • 通过Nginx反向代理实现IP访问分流

    根据特定IP来实现分流 将IP地址的最后一段最后一位为0或2或6的转发至test 01 com来执行 xff0c 否则转发至test 02 com来执行 upstream test 01 com server 192 168 1 100 8
  • nginx map 妙用

    worker processes auto stream map remote addr dynamic backend 02468 34 test1 34 ip最后一位是偶数 13579 34 test2 34 ip最后一位是奇数 一个正
  • shell脚本通过mysql获取数据

    数据库查询结果 xff0c 结果为每行从左到右每个单元格为一行 xff08 首行为SQL查询结果的列名 xff09 数组默认分割符号是空格 xff0c 当查询结果中包含空格字符时 xff0c 会导致一个字段被分割开 xff0c 例如 xff
  • Activemq Artemis jmx使用

    1 修改 目录 mybroker etc broker xml 修改 lt name gt myartemis lt name gt 后面会用 加入2行 lt jmx management enabled gt true lt jmx ma
  • SpringBoot设置mysql的ssl连接

    因工作需要 xff0c mysql连接需要开启ssl认证 xff0c 本文主要讲述客户端如何配置ssl连接 SpringBoot xff1a 2 0 5 RELEASEmysql connector java xff1a 8 0 18mys
  • ThinkPHP URL路由解析

    ThinkPHP是国内非常火的一个轻量级框架 xff0c 采用MVC模式 xff0c 结构写的非常好 xff0c 今天 大象 带大家走一下ThinkPHP框架系统运行流程 xff0c 我将跟随ThinkPHP的执行进行代码讲解 xff0c
  • 【gRPC】双向认证下grpc-gateway原理及简单使用

    文章目录 前言一 grpc gateway原理二 环境准备三 服务端改造四 总结 前言 在上一篇文章自签CA 服务端和客户端双向认证中 xff0c 我们了解了双向认证并进行了实践 xff0c 本篇文章将基于双向认证 xff0c 使用gRPC
  • php 装饰模式

    lt php abstract class component public abstract function operation class concretecomponent extends component public func
  • Beyond Compare在Mac OS系统下永久试用

    亲测可用 一 原理 Beyond Compare每次启动后会先检查注册信息 xff0c 试用期到期后就不能继续使用 解决方法是在启动前 xff0c 先删除注册信息 xff0c 然后再启动 xff0c 这样就可以永久免费试用了 二 下载 首先
  • RSA加密解密(PHP Demo)

    private key 61 39 BEGIN RSA PRIVATE KEY MIICXQIBAAKBgQDpoODVtnSztGyb p 43 g Ob36jb3jzWzS2qovOjpY rrTjwlVcQ pB2m1nZDQNpTF