工具的安装:

一.源码安装

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 

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. RSA密钥生成与使用

    RSA密钥生成与使用 openssl生成工具链接:http://pan.baidu.com/s/1c0v3UxE 密码:uv48 1. 打开openssl密钥生成软件打开 openssl 文件夹下的  ...

  2. Linux下OpenSSL的安装与使用

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

  3. linux下实用的快速随机生成复杂密码

    linux下实用的快速随机生成复杂密码 [root@test.db-audit.1 ~]# </dev/urandom tr -dc '1234567890!@#$%abcdefghigklmn ...

  4. openssl-0.9.8k_WIN32(RSA密钥生成工具

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha openssl-0.9.8k_WIN32(RSA密钥生成工具

  5. windows上RSA密钥生成和使用

    一,下载安装windows平台openssl密钥生成工具,执行安装目录bin下的"openssl.exe",执行后弹出命令窗口如下 运行 二,生成私钥 输入"genrsa ...

  6. linux下c++动态库的生成及使用

    文章来源于:http://hi.baidu.com/ablenavy/item/b498901c6826bbf587ad4e33 我的程序是一个类,在网上找了半天,都是c的例子,c++的类封装成静态库 ...

  7. RSA密钥生成、加密解密、签名验签

    RSA 非对称加密公钥加密,私钥解密 私钥签名,公钥验签 下面是生成随机密钥对: //随机生成密钥对 KeyPairGenerator keyPairGen = null; try { keyPair ...

  8. Windows下RSA密钥生成工具openssl

    下载openssl.zip 1. 生成原始 RSA私钥文件 private_key.pem openssl genrsa -out private_key.pem 1024 2. 将原始 RSA私钥转 ...

  9. Java RSA 密钥生成工具

    MAC openssl: RSA加解密 第一条命令是生成密钥长度为1024的密钥: 第二条命令是从中生成公钥: 第三条命令是使用pkcs8编码密钥为私钥 http://blog.csdn.net/ch ...

随机推荐

  1. 解决ASP.NET裁剪图片失真

    //有的时候剪切图片时,出现图片失真的问题,是因为图片质量下降造成的 //按照指定的数据画出画板(位图) System.Drawing.Image imgPhoto = System.Drawing. ...

  2. [BZOJ2654]tree 最小生成树+贪心

    2654: tree Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 2435  Solved: 1011[Submit][Status][Discus ...

  3. ES6新特性及用法笔记

    1.新增数据类型Symbol.[Number.Boolean.Symbol.Null.Undefined.Object] Symbol类型的值通过Symbol函数生成,相同的Symbol函数返回的值 ...

  4. Mac上Git的安装与简单使用

    一.安装: Git下载地址: http://git-scm.com/downloads/ 下载Git.配置Git: http://blog.csdn.net/reactor1379/article/d ...

  5. iOS import framework头文件时报错could not build module xxx

    导致这个错误的原因有多种: 1.库的search paths没有设置对. 2.库里面某些头文件找不到. 而导致.h头文件找不到的原因也有多种: (a)search paths没设置对,文件可能换过位置 ...

  6. Facebook KeyHash生成方法

    1. 去https://code.google.com/p/openssl-for-windows/downloads/list下载OpenSSL工具 2.  在C盘根目录下新建一个openssl的文 ...

  7. THINKPHP nginx设置路由为PATHINFO模式

    首先THINKPHP配置文件中设置 //url访问模式为rewrite模式 'URL_MODEL'=>'2', 然后再在nginx.conf文件中,找到这一条语句 #access_log log ...

  8. DotNetBrowser入门教程(更新完善中)

    DotNetBrowser 希望实现的目标:桌面软件可以完美运行Html5,内置支持MVC与WebSocket的微型服务器. 基于.Net 4.0开发.开发环境:VS2017,运行环境支持Window ...

  9. Unable to list target platforms. Please make sure the android sdk path is correct. See the Console for more details.

    在android上发布遇到 androidSDK无法找到的问题 http://www.jianshu.com/p/fe4c334ee9fe

  10. case...when...简单用法sql说明

    1.项目用到的sql展示 select n.name,n.position, case when ( then '有' else '无' end PUNISHMENT, case when ( the ...