工具的安装:

一.源码安装

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密钥生成相关推荐

  1. Linux(openSSL)上RSA密钥生成和使用(java)

    openssl 公私钥生成 生成私钥 openssl genrsa -out rsa_private_key.pem 1024 生成公钥 openssl rsa -in rsa_private_key ...

  2. Linux下OpenSSL的安装与使用

    Linux下OpenSSL的安装与使用 OpenSSL简介 OpenSSL是一个SSL协议的开源实现,采用C语言作为开发语言,具备了跨平台的能力,支持Unix/Linux.Windows.Mac OS ...

  3. linux下生成源程序控制流图,Linux下控制(统计)文件的生成的C代码实现

    本文分享了Linux下控制(统计)文件的生成的C代码实现案例,供大家参考,具体内容如下 一.需求描述不定时地在Linux机器下的某目录中放入文件,文件内容中包含了用户号码.起止时间等字段,现要求编写一 ...

  4. linux一键电影网站脚本,Linux下HTML5播放器一键生成脚本

    原创内容,转载请注明出处: https://www.myzhenai.com.cn/post/2394.html https://www.myzhenai.com/thread-17969-1-1.h ...

  5. linux rsa密钥生成工具,linux下生成rsa密钥的方法

    首先生成密钥,用命令ssh-keygen –t rsa 运行后可以一直空格,生成密钥,id_rsa和id_rsa.pub文件 ,默认放在/root/.ssh/下,.ssh文件是隐藏的,要显示隐藏文件才 ...

  6. RSA密钥生成、加密解密、数据签名验签

    公钥.私钥生成 准备工作,基础的帮助类 使用java代码生成公钥私钥 使用openssl生成公钥私钥 加解密 数据签名及验签 数据加解密及签名验签测试 注意项 公钥.私钥生成 准备工作,基础的帮助类 ...

  7. Android、IOS客户端RSA密钥生成

    目录 OpenSSL介绍 使用OpenSSL 生成私钥 生成公钥 生成Java和Android的私钥 创建证书请求文件 生成数字证书 生成iOS使用的公钥文件 生成iOS使用的私钥文件 关于什么是密钥 ...

  8. linux下如何用gcc编译器生成lst文件?

    工作中又用到lst文件去定位一些问题,因此突然又对这个文件产生了兴趣(因为之前几次也查过百度,苦于一直没找到直接的方法),这次就是先请教了工作的前辈,然后又整合了各方资料,总算是生成了lst文件了,因 ...

  9. linux下gcc编译c文件生成可执行文件的四个步骤

    Linux下gcc编译c文件为可执行文件分为四个步骤: 分别是 预编译.编译.汇编.链接. 1.预编译( 生成 hello.i 文件) 预编译的处理规则: 1. 将所有的 "#define& ...

最新文章

  1. 面试--java实现一个多人图文聊天室(c/s或b/s),写出思路
  2. MapInfo开发心得——多地图关联篇【转】
  3. Delta Lake——数据湖的可靠性
  4. allowedExts php,通过php扩展增加一个内置函数
  5. 当贝显示服务器生病,智能电视一直显示“缓冲中”是什么问题?当贝市场为你解答...
  6. 容器、微服务和互联网架构浅谈
  7. 10蓝牙_小米10手机专用?小米“真无线蓝牙耳机Air 2s”评测
  8. 2路归并排序算法c语言,用二路归并排序算法实现N个元素的排序
  9. 吾爱破解python就业班_我吾 区别
  10. 稳压二极管的工作原理是什么?
  11. 阿里如何实现海量数据实时分析?
  12. Git的cherry-pick等一些小知识
  13. 神山的方向至诚地祈祷、朝拜
  14. win10安装java环境15版_win10系统安装jdk的配置方法
  15. 阿里-蚂蚁金服-一面电面-上海-java研发实习生
  16. php ubound,VBA UBound()函数
  17. 各类文件头及其十六进制标识
  18. 【模型压缩】深度卷积网络的剪枝和加速(含完整代码)
  19. linux 键盘过滤,键盘过滤驱动程序不responsing
  20. 中国城市竞争力排名出炉

热门文章

  1. 介绍LuaPlus: 好用的Lua For C++扩展(修订)
  2. [转载]Eclipse SVN插件比较 Subclipse vs Subversive
  3. 杭电多校第三场-H-Game
  4. [LGP4859,...] 一类奇怪的容斥套DP
  5. 优化网站性能的35条规则
  6. Codeforces-743D - Chloe and pleasant prizes(树dp)
  7. 热更新--动态加载framework
  8. IDEA Reference - Essentials(基本要义)
  9. Win7_Wifi热点
  10. 高斯-勒让德公式 求积分