linux下OpenSSL的RSA密钥生成
工具的安装:
一.源码安装
OpenSSL Version:openssl-1.0.0e.tar.gz
------------------------安装:
1、将下载的压缩包放在根目录,
2、在文件夹下解压缩,
命令:tar -xzf openssl-openssl-1.0.0e.tar.gz
得到openssl-openssl-1.0.0e文件夹
3、进入解压的目录:cd openssl-1.0.0e
4、设定Openssl 安装,( --prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下:
执行命令:./config --prefix=/usr/local/openssl
5、执行命令./config -t
6.执行make,编译Openssl
----------------------完成安装。
二,yum安装
#yum install openssl* -y
1.生成秘钥:(生成1024位的私钥,不指定的话默认2048位)
输入“genrsa -out rsa_private_key.pem 1024”命令,回车后,在当前 bin 文件目 录中会新增一个 rsa_private_key.pem 文件,其文件为原始的商户私钥(请妥善保 存该文件,PHP 开发语言中需要使用该文件)
[root@wentao12 ~]# openssl genrsa -out rsa_private_key.pem 1024
2.生成公钥:(根据这个私钥生成公钥)
输入“rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem”命令回车 后,在当前 bin 文件目录中会新增一个 rsa_public_key.pem 文件,其文件为原始 的商户公钥(请妥善保存该文件,PHP 开发语言中需要使用该文件)
[root@wentao12 ~]# openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
3.生成PKCS8 编码的私钥
输入命令“pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt”并回车,当前界面中会直接显示出生成结果
[root@wentao12 ~]# openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
,把复制的内容粘 贴进一个新的记事本中,可随意命名,只要知道这个是 PKCS8 格式的私钥即可(请 妥善保存该文件)
经过我测试就用屏幕打印的这个作为私钥,
公钥查看:#cat rsa_public_key.pem
注意文件格式前后标记符不能去掉,可以正常加密解密。
例子:
<?php /*** Created by PhpStorm.* User: Administrator* Date: 2018/4/1* Time: 1:50*///注意格式一定要有下面的标识符 $pub_key = "-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+p18S45D/xf+EpDpRDwMLp7Im edUzYhPUAy5orgPnOIwjUo7jDb6Zsn6axv5gDA+ooaxZoT+fXz2gNDhlvCWanLIv i0o2X6G5l1rCarb8irOQOyAP4Z3M8Pj9maaG3zwU251udcVTcLpV2q65sMKaJBOI jPpzwPFo+RU040k0kwIDAQAB -----END PUBLIC KEY-----"; $pri_key = "-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQC+p18S45D/xf+EpDpRDwMLp7ImedUzYhPUAy5orgPnOIwjUo7j Db6Zsn6axv5gDA+ooaxZoT+fXz2gNDhlvCWanLIvi0o2X6G5l1rCarb8irOQOyAP 4Z3M8Pj9maaG3zwU251udcVTcLpV2q65sMKaJBOIjPpzwPFo+RU040k0kwIDAQAB AoGAcrevA2SeuOhgiWVwGZoY0QiEr5YbbSGUoLuRTzd17ckeuZpRk9mPWFgIygT2 xsA7I9K0K/JUoAbkw+LoFH8TeFtxrq28L3jZE8Xr5MTrxVb4sImWwsJ/+bEW51Zs 6bp03/2SIVwtl1SkH9zyJlEWlEhb41KGIm0dC1ctMKE2HEECQQD12wFNSCqOyOEU LffZKD/IqoHVU2RfGevft1/08OG7cVp+4YMZ+gRTsRYZDEkPTG8SjHxbTBxJ/EH/ qFDlOhrRAkEAxoVD+xJBRqu11uIXafd5reJrfTa0qwupYuTiH7c3EWPa5YRKg6Xk pTnUstvl0FBjwyTJ9iDTcChYFx2c/q1qIwJAWDAao3IDcfw0YFyszsRVPNGMiMzE 8CgIJ9NLJD1Tez0JzQFvWV4JN0wKNSnm+wnbvbeO0+DVNOS7d80UV2UkQQJAMDb7 rMXhPrXDgz4EK8NkNRwxuQaJWKWLbS5j0QohgMK8zlOT+WdYIdzq0MnhhfeQUzvj JTkRwUK7KloR4DTj+wJBAJwRkRVtyNKfH/nb6WkTAVqRjoecLJHIN/JT3UzgzD6X ybxwxyupVw8aK1QZDYwn9LVqru2WjpG99JXxEcSP+vY= -----END RSA PRIVATE KEY-----";$str = "这个是要加密的字符4567串888";//这个例子是演示RSA加密 //非对称加密 分为 公钥和私钥 //通常 公钥加密 私钥解密,私钥加密,公钥解密/** 用到的加密函数 openssl_private_decrypt — Decrypts data with private key openssl_private_encrypt — Encrypts data with private key openssl_public_decrypt — Decrypts data with public key openssl_public_encrypt — Encrypts data with public key**///echo $private_key; $pi_key = openssl_pkey_get_private($pri_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id $pu_key = openssl_pkey_get_public($pub_key);//这个函数可用来判断公钥是否是可用的 //print_r($pi_key);echo "\n"; //print_r($pu_key);echo "\n";//公钥加密过程 $enStr = ''; openssl_public_encrypt($str,$enStr,$pu_key); //加密后的字符 有些无法显示 需要 base64_encode ( string $data ) ,解密的时候不需要要 base64_decode ( string $data ) echo base64_encode ($enStr); echo "<br/>";//私钥解密过程 $deStr = ''; //$enStr = base64_decode ( $enStr); openssl_private_decrypt($enStr,$deStr,$pi_key); echo $deStr; echo "<br/>";//下面是签名验证例子,验证签名 一定是用公钥去验证 对方私钥加密的结果 $binary_signature = ""; // At least with PHP 5.2.2 / OpenSSL 0.9.8b (Fedora 7) // there seems to be no need to call openssl_get_privatekey or similar. // Just pass the key as defined above openssl_sign($str, $binary_signature, $pi_key, OPENSSL_ALGO_SHA1);// Check signature $ok = openssl_verify($str, $binary_signature, $pu_key, OPENSSL_ALGO_SHA1);echo "check #1: "; if ($ok == 1) {echo "signature ok (as it should be)\n"; } elseif ($ok == 0) {echo "bad (there's something wrong)\n"; } else {echo "ugly, error checking signature\n"; }//var_dump(openssl_get_cipher_methods() );
生成秘钥:http://php.net/manual/en/function.openssl-private-encrypt.php
$res = openssl_pkey_new();// Get private key openssl_pkey_export($res, $privkey);// Get public key $pubkey = openssl_pkey_get_details($res); $pubkey = $pubkey["key"]; var_dump($privkey); var_dump($pubkey);
参考:
http://stephen830.iteye.com/blog/2087281
https://www.cnblogs.com/jaryoung/p/7644481.html
linux下OpenSSL的RSA密钥生成相关推荐
- Linux(openSSL)上RSA密钥生成和使用(java)
openssl 公私钥生成 生成私钥 openssl genrsa -out rsa_private_key.pem 1024 生成公钥 openssl rsa -in rsa_private_key ...
- Linux下OpenSSL的安装与使用
Linux下OpenSSL的安装与使用 OpenSSL简介 OpenSSL是一个SSL协议的开源实现,采用C语言作为开发语言,具备了跨平台的能力,支持Unix/Linux.Windows.Mac OS ...
- linux下生成源程序控制流图,Linux下控制(统计)文件的生成的C代码实现
本文分享了Linux下控制(统计)文件的生成的C代码实现案例,供大家参考,具体内容如下 一.需求描述不定时地在Linux机器下的某目录中放入文件,文件内容中包含了用户号码.起止时间等字段,现要求编写一 ...
- linux一键电影网站脚本,Linux下HTML5播放器一键生成脚本
原创内容,转载请注明出处: https://www.myzhenai.com.cn/post/2394.html https://www.myzhenai.com/thread-17969-1-1.h ...
- linux rsa密钥生成工具,linux下生成rsa密钥的方法
首先生成密钥,用命令ssh-keygen –t rsa 运行后可以一直空格,生成密钥,id_rsa和id_rsa.pub文件 ,默认放在/root/.ssh/下,.ssh文件是隐藏的,要显示隐藏文件才 ...
- RSA密钥生成、加密解密、数据签名验签
公钥.私钥生成 准备工作,基础的帮助类 使用java代码生成公钥私钥 使用openssl生成公钥私钥 加解密 数据签名及验签 数据加解密及签名验签测试 注意项 公钥.私钥生成 准备工作,基础的帮助类 ...
- Android、IOS客户端RSA密钥生成
目录 OpenSSL介绍 使用OpenSSL 生成私钥 生成公钥 生成Java和Android的私钥 创建证书请求文件 生成数字证书 生成iOS使用的公钥文件 生成iOS使用的私钥文件 关于什么是密钥 ...
- linux下如何用gcc编译器生成lst文件?
工作中又用到lst文件去定位一些问题,因此突然又对这个文件产生了兴趣(因为之前几次也查过百度,苦于一直没找到直接的方法),这次就是先请教了工作的前辈,然后又整合了各方资料,总算是生成了lst文件了,因 ...
- linux下gcc编译c文件生成可执行文件的四个步骤
Linux下gcc编译c文件为可执行文件分为四个步骤: 分别是 预编译.编译.汇编.链接. 1.预编译( 生成 hello.i 文件) 预编译的处理规则: 1. 将所有的 "#define& ...
最新文章
- 面试--java实现一个多人图文聊天室(c/s或b/s),写出思路
- MapInfo开发心得——多地图关联篇【转】
- Delta Lake——数据湖的可靠性
- allowedExts php,通过php扩展增加一个内置函数
- 当贝显示服务器生病,智能电视一直显示“缓冲中”是什么问题?当贝市场为你解答...
- 容器、微服务和互联网架构浅谈
- 10蓝牙_小米10手机专用?小米“真无线蓝牙耳机Air 2s”评测
- 2路归并排序算法c语言,用二路归并排序算法实现N个元素的排序
- 吾爱破解python就业班_我吾 区别
- 稳压二极管的工作原理是什么?
- 阿里如何实现海量数据实时分析?
- Git的cherry-pick等一些小知识
- 神山的方向至诚地祈祷、朝拜
- win10安装java环境15版_win10系统安装jdk的配置方法
- 阿里-蚂蚁金服-一面电面-上海-java研发实习生
- php ubound,VBA UBound()函数
- 各类文件头及其十六进制标识
- 【模型压缩】深度卷积网络的剪枝和加速(含完整代码)
- linux 键盘过滤,键盘过滤驱动程序不responsing
- 中国城市竞争力排名出炉
热门文章
- 介绍LuaPlus: 好用的Lua For C++扩展(修订)
- [转载]Eclipse SVN插件比较 Subclipse vs Subversive
- 杭电多校第三场-H-Game
- [LGP4859,...] 一类奇怪的容斥套DP
- 优化网站性能的35条规则
- Codeforces-743D - Chloe and pleasant prizes(树dp)
- 热更新--动态加载framework
- IDEA Reference - Essentials(基本要义)
- Win7_Wifi热点
- 高斯-勒让德公式 求积分