当前位置: 首页 > 编程日记 > 正文

php 生成非对称密钥,php实现非对称加密

使用非对称加密主要是借助openssl的公钥和私钥,用公钥加密私钥解密,或者私钥加密公钥解密。

1.安装openssl和PHP的openssl扩展

2.生成私钥:openssl genrsa用于生成rsa私钥文件,生成是可以指定私钥长度和密码保护

1. openssl genrsa -out rsa_private_key.pem 1024

3.生成公钥:rsa命令用于处理RSA密钥、格式转换和打印信息

1. openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

4.这里我们使用私钥加密,公钥解密

1. PHP

2. /**

3. *密钥文件的路径

4. */

5. $privateKeyFilePath = 'rsa_private_key.pem';

6. /**

7. *公钥文件的路径

8. */

9. $publicKeyFilePath = 'rsa_public_key.pem';

10.

11. extension_loaded('openssl') or die('php需要openssl扩展支持');

12.

13. (file_exists($privateKeyFilePath) && file_exists($publicKeyFilePath)) or die('密钥或者公钥的文件路径不正确');

14. /**

15. *生成Resource类型的密钥,如果密钥文件内容被破坏,openssl_pkey_get_private函数返回false

16. */

17. $privateKey = openssl_pkey_get_private(file_get_contents($privateKeyFilePath));

18. /**

19. *生成Resource类型的公钥,如果公钥文件内容被破坏,openssl_pkey_get_public函数返回false

20. */

21. $publicKey = openssl_pkey_get_public(file_get_contents($publicKeyFilePath));

22.

23. ($privateKey && $publicKey) or die('密钥或者公钥不可用');

24. /**

25. *原数据

26. */

27. $originalData = '加密前hahahaha';

28. /**

29. *加密以后的数据,用于在网路上传输

30. */

31. $encryptData = '';

32.

33. echo '原数据为:', $originalData, PHP_EOL;

34.

35. ///用私钥加密

36. if (openssl_private_encrypt($originalData, $encryptData, $privateKey)) {

37.

38.     /**

39.      *加密后可以base64_encode后方便在网址中传输或者打印否则打印为乱码

40.      */

41.     echo '加密成功,加密后数据(base64_encode后)为:', base64_encode($encryptData), PHP_EOL;

42.

43. } else {

44.     die('加密失败');

45. }

46.

47.

48. ///用公钥解密

49.

50. /**

51. *解密以后的数据

52. */

53. $decryptData ='';

54.

55. if (openssl_public_decrypt($encryptData, $decryptData, $publicKey)) {

56.

57.     echo '解密成功,解密后数据为:', $decryptData, PHP_EOL;

58.

59. } else {

60.     die('解密成功');

61. }

相关文章:

HDU 4951 Multiplication table(2014 Multi-University Training Contest 8)

思路 如果进制为p 那么当x<p时 &#xff08;p-1&#xff09;*&#xff08;p-x&#xff09;(p-&#xff08;x1&#xff09;) *p x 因为x<p 所以没有进位 所以高位上的数字为 p-&#xff08;x1&#xff09;。 根据上面所述。 只要我们能找出 p-1 那么我们…

H3C 静态默认路由配置

转载于:https://www.cnblogs.com/fanweisheng/p/11156783.html

malloc为什么会报错:memory corruption

最近遇到一个问题&#xff0c;很有意思&#xff0c;在此记录下&#xff0c;以备后续参考。 程序运行异常&#xff0c;报错&#xff1a;malloc: memory corruption. 用gdb 调试程序&#xff0c;bt 如下&#xff0c;程序在申请344 bytes内存时失败。 疑问&#xff1a;344bytes内…

php 静态类内存,php面向对象中static静态属性与方法的内存位置分析

本文实例分析了php面向对象中static静态属性与方法的内存位置。分享给大家供大家参考。具体如下&#xff1a;static静态属性的内存位置——>类&#xff0c;而不是对象。下面做测试来证明一下header("content-type:text/html;charsetutf-8");class Human{static pu…

Android中实现为TextView添加多个可点击的文本

这篇文章主要介绍了Android中实现为TextView添加多个可点击的文本,可实现类似Android社交软件显示点赞用户并通过用户名称进入该用户主页的功能,是非常实用的技巧,需要的朋友可以参考下。具体如下&#xff1a; 很多时候我们在使用社交软件的过程中多多少少会为别人的帖子点赞&a…

Set和存储顺序深入探讨、SortedSet排序的示例

2019独角兽企业重金招聘Python工程师标准>>> Set和存储顺序深入探讨、SortedSet排序的示例 package org.rui.collection2.set;import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet;//TypesForSets.java /**…

设计模式七大原则(C++描述)

前言 最近在学习一些基本的设计模式,发现很多博客都是写了六个原则,但我认为有7个原则,并且我认为在编码中思想还是挺重要,所以写下一篇博客来总结下 之后有机会会写下一些设计模式的博客(咕咕咕........ 设计模式的七大原则 1.单一职责原则 2.开放-封闭原则 3.依赖倒置原则 4.…

gdb高级调试技巧

1. 反向调试 gdb支持程序反向执行。 record 让程序开始记录反向调试所必要的信息 rn : reverse next rc: reverse continue &#xff0c;Continue program being debugged but run it in reverse record stop: 停止记录 2. 格式化&#xff08;pretty print&#xff09;打…

php代码实现关键词搜索,PHP代码实现百度统计关键词及来路推送

搜索热词勾起我搞这个的兴趣是因为有个卖软件的&#xff0c;老是向我的百度统计后台推送引流软件广告。搜索后发现早就有人做过这方面的研究&#xff0c;然而随着统计代码版本升级&#xff0c;部分功能暂时还未解决。今天这篇 PHP 代码实现提交虚假数据给百度统计就教大家&…

linux跨主机复制文件

scp -r billing10.200.171.111:/billdata2/user/yanhm/redis/* /newboss/billing/user/aabb 其中&#xff1a; 10.200.171.111&#xff1a;远程主机 billing&#xff1a;远程主机的用户名 /billdata2/user/yanhm/redis/&#xff1a;要复制远程主机的文件路径 /newboss/billing/…

delphi使用outputdebugstring调试程序和写系统日志

delphi使用outputdebugstring调试程序和写系统日志 procedure TForm1.btn1Click(Sender: TObject); beginOutputDebugString(dddddd);OutputDebugString(11); end;procedure TForm1.btn2Click(Sender: TObject); varEvtSrcHand: THandle;EvtMsg: String; p:Pointer; i:integer;…

一个下载Windows镜像的地址

https://www.52pojie.cn/thread-633128-1-1.html转载于:https://www.cnblogs.com/blogs-jch/p/11163849.html

perf + 火焰图分析程序性能

From: https://www.cnblogs.com/happyliu/p/6142929.html 1、perf命令简要介绍 性能调优时&#xff0c;我们通常需要分析查找到程序百分比高的热点代码片段&#xff0c;这便需要使用 perf record 记录单个函数级别的统计信息&#xff0c;并使用 perf report 来显示统计结果&a…

jquery 设置css样式

$("#61dh a").css(color, 多个样式属性 var divcss {background: #EEE,width: 478px,margin: 10px 0 0,padding: 5px 10px,border: 1px solid #CCC};$("#result").css(divcss);查看某个元素的css属性值。 $("#61dh a").css("color"…

php改7z,PHP的7z扩展名? - php

我找不到一个&#xff0c;也不知道PHP Compression and Archive Extensions中的任何一个是否可以工作。您认为我可以使用compression stream从7z文件读取数据吗&#xff1f;更新7z forums对php扩展有很多要求参考方案7z文件格式可以使用各种compression algorithms&#xff0c;…

Classloader内存泄露

2019独角兽企业重金招聘Python工程师标准>>> 最近遇到了这个问题&#xff0c;在修改了-Xmx后有时仍然会出现&#xff0c;下文分析的很有启发&#xff0c;看了下文重新分析我的应用&#xff0c;在项目中我使用了spring mvc作为控制层&#xff0c;由于使用到了微信公众…

Springboot + oauth2 单点登录 - 原理篇

OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。授权码模式(authorization code)密码模式(resource owner password credentials)客户端模式(client credentials) 不常用。

Java 类型判断方法

Java 类型判断方法有三种,分别是instanceof是关键字,isInstance和isAssignableFrom是Class中的方法。> cls);

Docker-Compose搭建单体SkyWalking 6.2

SkyWalking简介 SkyWalking是一款高效的分布式链路追踪框架&#xff0c;对于处理分布式的调用链路的问题定位上有很大帮助 有以下特点&#xff1a; 性能好 针对单实例5000tps的应用&#xff0c;在全量采集的情况下&#xff0c;只增加 10% 的CPU开销。支持多语言探针支持自动及手…

gprof 性能优化工具

gprof用于分析函数调用耗时&#xff0c;可用gprof分析最耗时的函数&#xff0c;以便优化程序。 gcc链接时也一定要加-pg参数&#xff0c;以使程序运行结束后生成gmon.out文件&#xff0c;供gprof分析。 gprof默认不支持多线程程序&#xff0c;默认不支持共享库程序。 gcc 编…

基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理...

在很多系统模块里面&#xff0c;我们可能都需要进行一定的数据交换处理&#xff0c;也就是数据的导入或者导出操作&#xff0c;这样的批量处理能给系统用户更好的操作体验&#xff0c;也提高了用户录入数据的效率。我在较早时期的EasyUI的Web框架上&#xff0c;也介绍过通过Exc…

resin php,resin竟然开始支持PHP

真是好消息&#xff0c;resin开始支持PHP了&#xff0c;早上查资料&#xff0c;意外的看到了这个消息。由Resin 3.0.17开始&#xff0c;Resin里多了一个称为Quercus的东西&#xff0c;Quercus其实就是用Java实作的PHP语言模组。一直以来WEB语言都是各自为政&#xff0c;都有自己…

NSD WINDOWS--2014.8.11

实验01&#xff1a;不同网段的计算机远程配置交换机实验目标&#xff1a;实现不同网段的计算机远程配置交换机实验环境:实验步骤&#xff1a;一、分别配置pc0和pc1的ip地址网关二、配置交换机的管理ip地址和网关三、配置交换机远程管理密码和enable密码四、配置路由器的ip地址五…

day1-数据库基础

数据库基本概念 数据库是什么 数据库是用来存储数据的仓库&#xff0c;本质上就是一套基于CS架构的服务端和客户端程序&#xff0c;最终将数据存储在服务器端的磁盘中。之前学过的数据存储方式有&#xff1a; 列表 字典......等等&#xff0c;是在内存中的数据&#xff0c;缺点…

双重指针作为函数参数的妙用

双重指针作为函数参数&#xff0c;可以在函数函数内部修改外部指针的值。主要用法包括&#xff1a; 1. 在函数内部分配内存&#xff0c;作为函数参数返回&#xff1b; 2. 在函数内部设置指针为空&#xff1b; #include <stdio.h> #include <stdlib.h> #include …

什么是常函数?

类的成员函数后面加 const&#xff0c;表明这个函数不会对这个类对象的数据成员&#xff08;准确地说是非静态数据成员&#xff09;作任何改变。 在设计类的时候&#xff0c;一个原则就是对于不改变数据成员的成员函数都要在后面加 const&#xff0c;而对于改变数据成员的成…

matlab整型和浮点的区别,技术帖 | 心理学MATLAB初学者教程--简单数据类型介绍(逻辑型数据,整型/浮点型数据,字符型)......

1.2.1 什么是变量和变量名变量这个词似乎在许多地方都有出现&#xff0c;在计算机中变量是指是一段有名字的连续存储空间(摘自百度百科)&#xff0c;而这个所谓的名字就叫做变量名。举个例子说现在我们再MATLAB的命令窗口中输入&#xff1a;A 1 然后按回车&#xff0c;我们会看…

为窗口添加滚动条事件

为窗口添加滚动条事件其实非常的简单&#xff0c; window.οnscrοllfunction(){};注意在获取滚动条距离的时候谷歌不识别document.documentElement.scrollTop&#xff0c;必须要加上document.body.scrollTop&#xff1b;即var scrolltopdocument.documentElement.scrollTop||d…

当远程桌面到Windows终端服务器,出现终端服务器超出了最大允许连接数,怎么办...

如果是老版本的MSTSC则使用 MSTSC /console /v:ip如果是新版本 MSTSC /admin /v:ip转载于:https://www.cnblogs.com/SharkXu/archive/2012/10/08/MSTSC.html

连续地址数据(数组或者malloc的内存)作为函数参数

在编程时&#xff0c;一簇连续的内存单元&#xff0c;比如数组或者malloc的内存块,如下的数组a 或者指针p. int a[4]; int *p malloc(4 * sizeof(int)); 我们要想修改上述连续的内存块&#xff0c;可以写一个函数(一维指针做参数传入起始地址即可&#xff09;来搞定。 If …