rsa php openssl,openssl rsa 使用简介

openssl命令的用法

密钥的生成

a. 生成非对称密钥对

openssl genrsa -out rsa.key

b. 指定生成的密钥的位数,默认512

openssl genrsa -out rsa_2048.key 2048

c. 为私钥添加密码 (一般都不用)

openssl genrsa -out rsa_des3.key -des3

密钥的查看

d. 查看私钥

openssl rsa -in rsa.key

e. 查看公钥

openssl rsa -in rsa.key -pubout

f. 查看公钥和modulus

openssl rsa -in rsa.key -modulus

g. 查看密钥的详细信息,包含component prime等细节信息,这些信息的值都是冒号分割的,称为abstract

openssl rsa -in rsa.key -text

h. 查看只有public key的文件

openssl rsa -in pub.txt -pubin

注:

pub.txt 可由

openssl rsa -in rsa.key -pubout >pub.txt

openssl rsa -in rsa.key -pubout -out pub.txt

产生

如果pub.txt 中不是公钥将报错, -pubin 仅仅说明 -in 所指定的文件里面是什么

i. 只查看key的其他信息,不显示key

openssl  rsa -in rsa.key -noout

openssl rsautl 系列

1. 使用生成的公钥加密文件

openssl rsautl -encrypt -in hello -inkey test_pub.key -pubin -out hello.en

1

opensslrsautl-encrypt-inhello-inkeytest_pub.key-pubin-outhello.en

-in指定要加密的文件,-inkey指定密钥,-pubin表明是用纯公钥文件加密,-out为加密后的文件

2. 使用生成的私钥解密文件

openssl rsautl -decrypt -in hello.en -inkey test.key -out hello.de

1

opensslrsautl-decrypt-inhello.en-inkeytest.key-outhello.de

-in指定被加密的文件,-inkey指定私钥文件,-out为解密后的文件

参考: http://www.cnblogs.com/aLittleBitCool/archive/2011/09/22/2185418.html

其它:

检查是否含有某个子命令

openssl no-rsa

输出rsa,命令的返回值为1,说明存在该子命令

openssl no-des5

输出no-des5 命令的返回值为0,说明不存在des5这个子命令

分析key的详细信息

openssl asn1parse -in rsa.key

openssl asn1parse -in pub.txt

签名和签名的验证

这里给出一个例子:

基本步骤:

1. 生成rsa密钥对

2. 用私钥做签名

3. 用公钥做验证

[root@bsso ~]# openssl

OpenSSL> genrsa -out rsa.1024 1024

Generating RSA private key, 1024 bit long modulus

………..++++++

……….++++++

e is 65537 (0x10001)

OpenSSL> rsa -in rsa.1024 -pubout

writing RSA key

—–BEGIN PUBLIC KEY—–

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD0BlFXN1wkgBb5hadMeLz4Pqj2

nZQGyyidW1GTun9rnKkG7o/v/YM8MCcrqW+2hizkbJygfRGvb1iHvc22SD7Q1Unk

7yKU5qDiDnXdIl1x05PMGRwfNhG75uv9tr/IsxA+bmIrEAZ+fxlGhXbg8R2gUm2O

c51AyBOgb92DtEfLgQIDAQAB

—–END PUBLIC KEY—–

OpenSSL> rsa -in rsa.1024 -pubout -out rsa.1024.pub

writing RSA key

OpenSSL> dgst -sign rsa.1024 -sha1 -out a.sign a.php

OpenSSL> dgst -verify rsa.1024.pub -sha1 -signature a.sign a.php

Verified OK

OpenSSL>

如何查看公钥的位数:

e83d0a3e9da324eb99300ffaf9064c48.png

解释一个错误的说法: 上面的公钥base64 decode 之后为94字节, 不能说该公钥的位数为 94*8 = 752位; 而是用上面的方法查看,为: 512位

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言标识符有哪三类

C语言标识符有关键字、用户标识符、预定义标识符三类。C语言规定,标识符只能由字母、数字和下划线组成,并且第一个字符必须是字母或下划线,不能是数字。C语言中的标识符可分为关键字、用户标识符、预定义标识符三类。C语言规定,标…

Hibernate锁定模式– PESSIMISTIC_FORCE_INCREMENT锁定模式如何工作

介绍 在上 一篇 文章中 ,我介绍了OPTIMISTIC_FORCE_INCREMENT锁定模式,并将其应用于将子实体版本更改传播到锁定的父实体。 在本文中,我将介绍PESSIMISTIC_FORCE_INCREMENT锁定模式,并将其与乐观的锁定模式进行比较。 相像多于不…

C语言中字符串的结束标志是什么

C语言中字符串的结束标志是【\0】。C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串,字符串总是以【\0】作为结束符。\0就是8位的00000000,因为字符类型中并没有对应的这个字符,所以这么写。\0就是 字符串结束标…

php 5.6.27 在某些机器上正常,在 Windows 10 64、PHP 5.6 下重命名中文名文件,提示错误的解决...

1、重命名某个目录中的文件名,其代码,如图1图12、报错:rename(E:/wwwroot/avatar/BEIJI/侯森.jpg,E:/wwwroot/avatar/BEIJI/378477.jpg): ϵͳ�Ҳ���ָ���&am…

c语言中字符常量是什么?

c语言中字符常量是什么?字符常量:一个用单引号括起来的单个字符(或字符转义序列或三字母词)实质(含义):是一个整形值。属于四大基本数据类型(分别是整型,浮点型&#xff…

Hibernate锁定模式– OPTIMISTIC_FORCE_INCREMENT锁定模式如何工作

介绍 在我以前的文章中 ,我解释了OPTIMISTIC锁定模式是如何工作的,以及它如何帮助我们同步外部实体状态更改。 在本文中,我们将介绍OPTIMISTIC_FORCE_INCREMENT锁定模式的使用模式。 使用LockModeType.OPTIMISTIC ,将在当前正在运…

c语言的输入输出语句有哪些?

c语言的输入输出语句有:“getchar(void);”和“putchar(int c);”、“scanf("格式控制字符串",地址列表);”和“printf("格式控制字符串",输出列表);”、“gets()”和“puts()”等等。一:控制台输入输出(1)字符数据的输入/输出字符输…

primefaces_PrimeFaces:在动态生成的对话框中打开外部页面

primefaces我已经在即将出版的PrimeFaces Cookbook版本2中写过一篇食谱的博客。 在这篇文章中,我想发表第二篇关于一个名为Dialog Framework的小型框架的文章。 我个人喜欢它,因为我记得我为使用Struts框架付出同样的代价。 当您想将外部页面加载到弹出窗…

c语言源文件经过编译后生成文件的后缀是什么?

c语言源文件经过编译后,生成文件的后缀是“.obj”。C语言源文件后缀名是“.c”,编译生成的文件后缀名是“.obj”,连接后可执行文件的后缀名是“.exe”。C语言创建程序的步骤:编辑:就是创建和修改C程序的源代码-我们编写…

java编译器jdk版本_以编程方式确定Java类的JDK编译版本

java编译器jdk版本当需要确定使用哪个JDK版本来编译特定的Java .class文件时, 通常使用的方法是使用javap并在javap输出中查找列出的“主要版本”。 我在我的博客文章Autoboxing,Unboxing和NoSuchMethodError中引用了这种方法,但是在继续以编…

c语言指针用法有哪些

c语言指针用法:一,指针定义:指针变量的取值范围取值0~4G,是一种数据类型(无符号整数,代表了内存编号)。它可以用来定义变量(与int、long一样),与int、long不同的它存储整…

ogm session_带有Hibernate OGM的NoSQL –第一部分:持久化您的第一个实体

ogm sessionHibernate OGM的第一个最终版本已经发布 ,团队从发布狂潮中恢复了一些。 因此,他们考虑开设一系列教程风格的博客,使您有机会轻松地从Hibernate OGM重新开始。 感谢Gunnar Morling( gunnarmorling )创建了本…

c语言volatile关键字的作用是什么?

一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执…

jaxb解析字符串xml_一个JAXB Nuance:字符串与枚举(受限制的XSD字符串)的枚举

jaxb解析字符串xml尽管用于XML绑定的Java体系结构 ( JAXB )在名义情况下(尤其是自Java SE 6以来) 相当容易使用,但它也存在许多细微差别。 一些常见的细微差别是由于无法将 XML架构定义 (XSD)类…

php伪静态后不能访问html,php伪静态后html不能访问怎么办

php伪静态后html不能访问的解决办法:首先判断文件是否存在;然后设置存在则不rewirte,不存在且符合规则才rewrite;最后修改htaccess文件即可。推荐:《PHP视频教程》具体问题:PHP伪静态后不能访问纯html文件.…

c语言中,char型数据是以什么形式存储的?

C语言 字符型(char)简介字符型(char)用于储存字符(character),如英文字母或标点。严格来说,char 其实也是整数类型(integer type),因为char 类型储…

声明式编程与函数式编程_实用程序类与函数式编程无关

声明式编程与函数式编程最近,我被指控反对函数式编程,因为我将实用程序类称为反模式 。 绝对是错的! 好吧,我确实认为它们是一个糟糕的反模式,但是它们与函数式编程无关。 我相信有两个基本原因。 首先,函数…

C语言中位运算符有哪些

C语言中位运算符有:位操作是程序设计中对位模式按位或二进制数的一元和二元操作。在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。在现代架构中, 情况并非如此:位运算的运算速度通常…

jsf表单验证_JSF:在正确的阶段进行验证(了解生命周期)

jsf表单验证嗨,大家好! 尽管标题强调验证一词,但本文实际上是关于JSF生命周期的。 那是因为我相信,真正了解生命周期的最简单方法之一就是通过做出我们一直在做的事情:验证用户输入。 通常,了解所谓的JSF…

java广度优先爬虫示例,【爬虫】广度优先遍历抓取数据概述

这次都是一些纯语言的表达,可能会有点啰嗦,或者有点枯燥,也是对爬虫的一些小小的见解,可能只是一些常见话,哈哈,还是耐心的写完。网络爬虫的整体执行流程:1)确定一个(多个)种子网页2)进行数据内…