php rsa 非对称加密

PHP项目实战:基于PGP与GnuPG扩展实现RSA非对称加密通信 非对称加密是现代信息安全的核心技术之一,它通过公钥与私钥的配对机制,解决了在不安全信道中安全交换信息与验证身份的根本问题。其核心原理基于数学难题(如大数分解),公钥用于加密或验证签名,私钥用于解密或生成签名,从而确保了数据的机密性、完整性与不可否认性。这项技术在保障数据传输安全方面具有极高的技术价值,广泛应用于HTTPS、数字证书、安全邮件、API通信及软件签名等关键场景。本文聚焦于PHP工程实践,针对需要与外部系统(如支付网关、政务平台)进行标准化、安全数据交换的需求,深入探讨了如何利用PGP(Prett 阅读详情

php rsa 加密 相关 api

  • openssl_pkey_get_private

    // 用来判断私钥是否可用,可用则返回 Resource id
    resource openssl_pkey_get_private(mixed key[,string passphrase = “”])

  • openssl_pkey_get_public

    // 用来判断公钥是否可用,可用则返回 Resource id
    resource openssl_pkey_get_public(mixed $certificate)

参数问题

其中参数 $key $certificate 有一种传递形式:容易出错
file://path/to/file.pem
// return false
// 'file:///' 多了一个 '/'
openssl_pkey_get_private('file:///E:/SAFARI_SHI/tmp/key/rsa_private_key.pem');
// 应该是两个 '//'
// resource(4) of type (OpenSSL key)
$privateKey = openssl_pkey_get_private('file://E:/SAFARI_SHI/tmp/key/rsa_private_key.pem');
// resource(4) of type (OpenSSL key)
openssl_pkey_get_private('file://E:/SAFARI_SHI/tmp/key/private_key.pem');
// --------------------------------------------------------
// return false
// 这种形式亦是错误的
openssl_pkey_get_public('key/rsa_public_key.pem');
// return false
openssl_pkey_get_public('file:///E:/SAFARI_SHI/tmp/key/rsa_public_key.pem');
// resource(5) of type (OpenSSL key)
openssl_pkey_get_public('file://E:/SAFARI_SHI/tmp/key/rsa_public_key.pem');

ps

关于私钥的话,会有两个 rsa_private_key.pem private_key.pem
我试了下,两个都可以使用

code demo

<?php

/**
 * php rsa demo
 * rsa 非对称加密
 * 公钥、私钥对
 * 私钥加密的内容能通过公钥解密(反过来亦可以)
 *
 * 2016-01-09 21:58:48
 */

// 这个函数可用来判断私钥是否可用,可用返回 Resource id
$privateKey = openssl_pkey_get_private('file://E:/SAFARI_SHI/tmp/key/rsa_private_key.pem');

// 这个函数可用来判断公钥是否可用,可用返回 Resource id
$publicKey = openssl_pkey_get_public('file://E:/SAFARI_SHI/tmp/key/rsa_public_key.pem');

print_r($privateKey);
echo "\n";
print_r($publicKey);
echo "\n";

// 原始数据
$data = 'aa11-22-334';
$encrypted = '';
$decrypted = '';

echo "---------------------------------------\n";
var_dump('原始数据', $data);
echo "---------------------------------------\n";
var_dump('私钥加密');
// 私钥加密
openssl_private_encrypt($data, $encrypted, $privateKey);
// 加密后的内容通常含有特殊字符,需要编码转换下
// 在网络间通过url传输时要注意base64编码是否是url安全的
$encrypted = base64_encode($encrypted);

var_dump($encrypted);

var_dump('公钥解密');
// 私钥加密的内容可通过公钥解密出来
openssl_public_decrypt(base64_decode($encrypted), $decrypted, $publicKey);

var_dump($decrypted);

echo "---------------------------------------\n";
var_dump('公钥加密');
// 公钥加密
openssl_public_encrypt($data, $encrypted, $publicKey);
$encrypted = base64_encode($encrypted);

var_dump($encrypted);

var_dump('私钥解密');
// 私钥解密
openssl_private_decrypt(base64_decode($encrypted),$decrypted,$privateKey);

var_dump($decrypted);
PHP实现非对称加密RSA算法(附完整源码) 阅读详情

相关推荐

腾讯文档API逆向分析:不用Selenium也能批量导出的黑科技

本文揭秘了如何通过Python逆向分析腾讯文档的隐藏API,实现无需Selenium即可批量导出在线表格的高效方法。详细解析了API调用流程、Cookie维护及异常处理技巧,相比传统方案性能提升显著,适用于大量文档导出的自动化场景。

h9j8k7l6m5n的博客 1201

OpenSSL公钥 私钥 RSA

获取私钥资源 $config = [ "digest_alg" => "sha512",//摘要算法或签名哈希算法 "private_key_bits" => 1024,//字节数 512 1024 2048 4096 等 "private_key_type" => OPENSSL_KEYTYPE_RSA, //加密类型 "config" => "D:\phpstudy_pro\Extensions\Apache2.4.39\conf\o

qq_35327536的博客 790

Quanto option期权公式推导(更新中)

Quanto期权不同于以标的股票或资产的计价货币支付最终收益的普通欧式期权,它以另一种货币以预先确定的汇率支付最后的收益。以股票B的计价货币来计价的quanto看涨期权的收益为F0×max⁡(Sa(T)−K,0)×Sb(T)F_0 \times \max(S_a(T)-K, 0) \times S_b(T)F0​×max(Sa​(T)−K,0)×Sb​(T) 其中SaS_aSa​以货币A计价,SbS_bSb​以货币B计价,F0F_0F0​是预先固定的汇率. 假设上述股票均遵循几何布朗运动,可以得到以下恒等式

qq_41782124的博客 3683

update core.php 更新_PHP: 更新日志 - Manual

8.0.0The format character p has been added.Prior to this version, false was returned on failure.Prior to this version, false was returned on failure.These functions no longer return false on failure.c...

weixin_34652034的博客 324

【006】深入了解C++中的进制转换:二进制、八进制、十进制、十六进制

二进制:0~1,以0b开头,bitset< 8 >输出。八进制:0~7,以0开头,oct输出。十进制:0~9,以数字开头,cout默认输出十进制。十六进制:0 ~ 9和A ~ F,以0x开头,hex输出,不区分正负。n进制:0~n-1。C++ 中常见的数字进制有十进制、二进制、八进制、十六进制。从十进制转换到其他进制:二进制:使用除以 2 取余数的方法,将得到的余数倒序排列即为二进制。八进制:使用除以 8 取余数的方法,将得到的余数倒序排列即为八进制。

Lion_Long的博客 2612

微信小程序码 createWxaCodeUnlimit 生成总是报错 41030 的解决方案

41030错误本质上就是路径不合法。路径多写了一个斜杠路径带了参数小程序版本未发布或 app.json 配置不一致。如果确认页面存在,可以通过来跳过检查。微信小程序 getUnlimitedQRCode 官方文档路径前不能加 /,参数放 scene,发布版本要有这个页面,不行就关掉 check_path。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 474

openssl生成证书命令详解

1、生成csr openssl req -new -newkey rsa:2048 -nodes -keyout 您的域名.key -out 您的域名.csr     req命令主要用于生成和处理PKCS#10证书请求。   -new               生成新的证书请求以及私钥,默认为1024比特。 -newkey rsa:bits 用于生成新的rsa

wwzuizz的博客 3056

华为OD机试真题 新系统 2026-07-22 Java&Go&C 实现【最小代价完成论文评审】

某校有 n 篇论文需要分配给教师评审。 每篇论文 i 可由 files[i] 对应的教师列表中任一教师评审。 每篇论文至少需要一名教师评审。 每位教师 t 不论被分配多少篇论文,其评审费用固定为 cost[t]。 请给出参与评审教师数量最少时的总费用。 如果存在多种方案满足教师数量最少,则选择总费用最小的方案。

MISAYAONE的博客 148

php openssl rsa 加密解密

$config = array( //"config" =>"D:/phpserver/Lighttpd/openssl.cnf", //'config' =>'D:/phpStudy/Lighttpd/OpenSSL.cnf', 'private_key_bits' => 1024,    // Size of Key. 'private_key_type' => OPENSSL_KEY

cyuyan的专栏 2133

YOLO26 vs YOLOv12 vs YOLOv10:工业场景性能实测,速度/精度/部署难度全对比(附完整测试代码)

YOLO26:工业场景全能型选手,无NMS+无DFL设计让部署和推理都省心,小目标精度优势明显,CPU推理速度提升43%,适合大多数生产线场景YOLOv12:中大型目标检测专家,Area Attention在复杂背景下表现出色,适合汽车、家电等大型零部件检测YOLOv10:速度狂魔,GPU上性能领先,轻量化版本适合边缘部署,但小目标精度略逊,适合对实时性要求极高的分拣线场景。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 623

YOLO项目部署:从Python脚本到Docker容器的企业级交付全流程

YOLO模型企业级Docker部署方案 核心挑战 环境一致性:解决"本地能跑,服务器崩掉"问题 可扩展性:支持单实例到多实例扩展 稳定性:确保99.9%可用性 部署流程 项目改造:模块化代码,分离配置 Docker镜像:支持CPU/GPU环境 API服务:封装推理逻辑 监控告警:实现自动化运维 技术方案 需求 解决方案 环境一致性 Docker镜像+依赖冻结 可扩展性 K8s+负载均衡 稳定性 健康检查+自动重启 项目结构 模块化代码组织 外部化配置管理 精确依赖版本控制 摘要重点:通过

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1230

安全证书、OpenSSL、keystore(keystore生成过程讲得多)

OpenSSL安全证书的生成步骤: 这是国产数据库-达梦数据库-安全证书的生成过程。达梦数据库V7采用基于SSL的安全加密通信。 0.准备工作 安装openssl 在bin目录下建立ca文件夹 ca文件夹下建立newcerts,private文件夹 建立index.txt和serial文件,serial文件中深入内容01 更改配置文件dir        = ./demoCA

1万+

10、智慧变电站 - 加载vue大屏元素(整体效果)

这一篇文章非常简单,但是也非常出效果阅读前面几篇文章,都可以看到有顶部、左侧、右侧的面板,主要我不会录gif图片,大屏元素面板还有一些动态加载的效果。 vue的transition标签 Vue 提供了 transition 的封装组件,可以给任何元素和组件添加进入/离开过渡;在进入/离开的过渡中,会有 6 个 class 切换:v-enter 、v-enter-active 、v-enter-to 、v-leave 、v-leave-active 、v-leave-to。我们正好使用这个特性来达到面板进入

github_39988036的博客 1039

PHP非对称加密-RSA

PHP非对称加密-RSA工具类测试代码 前言: RSA,常说的非对称加密。加密解密密钥不一致,它们是成对出现,通常密钥生成是PEM格式。 公钥加密的私钥解密,私钥加密的要公钥解密。 往往私钥是不公开的,公钥是大家共享的。 相同内容,相同私钥每次加密后结果还会不一样。 通过公钥加密结果,必须私钥解密。 同样私钥加密结果,公钥可以解密。 RSA加密也是块加密,因此一样存在填充模式。pkcs#1与pkcs#8 默认填充方式是pkcs#1。 注:php 目前只支持 pkcs#1的填充模式 工具类 /**

weixin_46044420的博客 1229

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

php rsa 封装,封裝php的非對稱加密RSA

將php的openssl擴展中的非對稱加密函數封裝成一個Rsa類。需要注意的是,在windows上,需要打開openssl的配置文件,請參照官方的openssl擴展安裝文檔。//以下說明2011-06-23添加在windows上安裝openssl擴展1、將php路徑下的兩個庫文件libeay32.dll和ssleay32.dll復制到操作system32下2、配置openssl配置文件的位置,在p...

weixin_27038245的博客 146

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

php实现openssl RSA非对称加密解密

今天接触了rsa非对称加密 查阅了许多资料得到了一下代码 改了一下注释 修改了一部分代码 使其更容易理解一些 <?php //私匙 $private_key = '-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQC3//sR2tXw0wrC2DySx8vNGlqt3Y7ldU9+LBLI6e1KS5lfc5jl TGF7KBTSkCHBM

辛苦的字幕君小样的博客 2960

封装php的非对称加密RSA

将php的openssl扩展中的非对称加密函数封装成一个Rsa类。 需要注意的是,在windows上,需要打开openssl的配置文件,请参照官方的openssl扩展安装文档。 //以下说明2011-06-23添加 在windows上安装openssl扩展 1、将php路径下的两个库文件libeay32.dll和ssleay32.dll复制到操作system32下 2、配置openssl配置文件的

Super乐De博客 728

php ras demo,封装php的非对称加密RSA

/*** 使用openssl实现非对称加密** @author*/class Rsa{/*** private key*/private $_privKey;/*** public key*/private $_pubKey;/*** the keys saving path*/private $_keyPath;/*** the construtor,the param $path is the...

weixin_42429893的博客 214

php封装一个加密算法,PHP封装的非对称加密RSA算法示例

本文实例讲述了PHP封装的非对称加密RSA算法。分享给大家供大家参考,具体如下:将php的openssl扩展中的非对称加密函数封装成一个Rsa类。需要注意的是,在windows上,需要打开openssl的配置文件,请参照官方的openssl扩展安装文档。在windows上安装openssl扩展1、将php路径下的两个库文件libeay32.dll和ssleay32.dll复制到操作system32...

weixin_39682560的博客 212

php rsa加密解密实例(非对称加密)

php服务端与客户端交互、提供开放api时,通常需要对敏感的部分api数据传输进行数据加密,这时候rsa非对称加密就能派上用处了,下面通过一个例子来说明如何用php来实现数据的加密解密 1、加密解密的第一步是生成公钥、私钥对,私钥加密的内容能通过公钥解密(反过来亦可以) 下载开源RSA密钥生成工具openssl(通常Linux系统都自带该程序),解压缩至独立的文件夹,进入其

记录 5707

php rsa加密乱码_php RSA非对称加密超长字符处理

class Rsa {const RSA_ENCRYPT_BLOCK_SIZE = 117;//加密切割长度const RSA_DECRYPT_BLOCK_SIZE = 128;//解密切割长度/*** @param $private_key私钥* @return false|resource*/public static function getPrivateKey($private_key...

weixin_42665255的博客 351

PHP使用RSA非对称加密解密

$private_key = ‘-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDpoODVtnSztGyb//p+g/Ob36jb3jzWzS2qovOjpY/rrTjwlVcQ pB2m1nZDQNpTFsG8ZBl7uPw3M81lr7NRRn6tY7Om8tbOOsRgY6u0xwbgdRStFFvw PzZ1HehiQ6WB8za8cucCyv...

飙歌的博客 371

php RSA非对称加密秘钥生成

非对称加密RSA在项目中比较常用,需要公钥和私钥,这里就进行一对钥匙的生成 RSA公钥私钥生成 载入拓展包 composer require phpseclib/phpseclib 项目引入 <?php require __DIR__ . '/vendor/autoload.php'; use phpseclib\Crypt\RSA; $rsa = new RSA(); extract($rsa->createKey()); echo $privatekey; echo $pu.

渡目成书 984

RSA非对称加密 php的openssl实现

<?php /** * 使用openssl实现非对称加密 * @since 2010-07-08 */ class Rsa { /** * private key */ private $_privKey; /** * public key */ ...

weixin_30314793的博客 164
上一篇: PHP 之 compact extract list
SAFARI_SHI
博客等级 码龄12年 1粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值