`

openssl 生成秘钥公钥

 
阅读更多

 

 

1.生成秘钥:(生成1024位的私钥,不指定的话默认2048位)

openssl genrsa -out rsa_private_key.pem 1024

 

2.生成公钥:(根据这个私钥生成公钥)

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

 

3.生成PKCS8 编码的私钥

openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt

屏幕会出输出一段字符串,把它复制到文本文件中保存成 pkcs8_rsa_private_key.pem 以后该文件就是私钥

 

然后可以用 PHP 公钥加密 ,私钥解密

 

 

值得注意的是,如果选择密钥是1024bit长的(openssl genrsa -out rsa_private_key.pem 1024),那么支持加密的明文长度字节最多只能是1024/8=128byte;

如果加密的padding填充方式选择的是OPENSSL_PKCS1_PADDING(这个要占用11个字节),那么明文长度最多只能就是128-11=117字节。如果超出,那么这些openssl加解密函数会返回false。

 

这时有个解决办法,把需要加密的源字符串按少于117个长度分开为几组,在解密的时候以172个字节分为几组。

其中的『少于117』(只要不大于117即可)和『172』两个数字是怎么来的,值得一说。

为什么少于117就行,因为rsa encrypt后的字节长度是固定的,就是密钥长1024bit/8=128byte。因此只要encrypt不返回false,即只要不大于117个字节,那么返回加密后的都是128byte。

172是因为什么?因为128个字节base64_encode后的长度固定是172。

这里顺便普及下base64_encode。encode的长度是和原文长度有个计算公式:

$len2 = $len1%3 >0 ? (floor($len1/3)*4 + 4) : ($len1*4/3);

分享到:
评论

相关推荐

    openssl生成秘钥工具

    下面,我们将详细讲解如何使用OpenSSL生成秘钥。 1. **生成RSA密钥对**: RSA是一种非对称加密算法,通常用于生成公钥和私钥对。你可以通过以下命令生成一个2048位的RSA密钥对: ``` openssl genpkey -algorithm...

    php生成秘钥和公钥,以及秘钥和公钥签名验证

    在PHP中,加密和安全通信通常涉及到密钥对的生成,包括私钥(秘钥)和公钥。OpenSSL库是PHP中用于处理这些任务的关键工具。本文将深入讲解如何使用PHP的OpenSSL扩展来创建密钥对,并利用它们进行数字签名的验证。 ...

    OpenSSL 中RSA16进制密钥生成方法

    在Linux下,使用OpenSSL生成RSA密钥的步骤如下: 1. 安装OpenSSL:首先,确保系统已经安装了OpenSSL。如果没有,可以通过包管理器(如`apt-get`或`yum`)来安装。例如,在Ubuntu上,可以运行`sudo apt-get install ...

    生成公钥密钥工具(Openssl) 64位

    在命令行中,使用OpenSSL可以轻松生成RSA公钥和私钥对。以下是一般步骤: 1. 打开命令提示符或PowerShell,定位到OpenSSL的bin目录。 2. 输入以下命令生成一个2048位的RSA私钥: ``` openssl genpkey -algorithm ...

    使用openssl生成RSA秘钥对(用这个!)

    本教程将详细解释如何使用开源工具openssl生成RSA密钥对,并探讨其在实际应用中的重要性。 首先,我们需要了解RSA的基本原理。RSA算法由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,它使用一对密钥——...

    OpenSSL工具生成RSA密钥1

    在这个场景中,我们主要关注如何使用 OpenSSL 生成 RSA 密钥对,这是许多网络安全应用的基础,比如 SSL/TLS 加密、数字签名以及 SSH 连接等。 1. **安装 OpenSSL**: 在 Windows 上,你可以通过下载 OpenSSL 的 ...

    .net DSA加密(C#读取OPENSSL生成的DSA的pem文件的秘钥)

    在本资源中,我们关注的是如何使用C#来处理OpenSSL生成的PEM格式的DSA密钥。PEM(Privacy Enhanced Mail)是一种文本编码格式,通常用于存储证书和密钥,它使用Base64编码将二进制数据转化为可读的ASCII字符。 首先...

    RSA公私钥生成工具 RSA秘钥生成工具

    RSA秘钥生成的过程涉及到几个关键步骤: 1. 随机选择两个大素数p和q,它们是密钥的基础。 2. 计算n=p*q,n是模数,是公钥和私钥的一部分。 3. 计算欧拉函数φ(n)=(p-1)*(q-1),它决定了密钥的长度。 4. 选取一个整数...

    Win64OpenSSL工具和p12秘钥解析方式

    **Win64OpenSSL工具和p12秘钥解析方式** 在IT行业中,安全通信是至关重要的,这通常涉及到加密和解密密钥的操作。OpenSSL是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现,以及一个包含各种密码学算法、...

    OpenSSL免安装RSA密钥生成工具

    "免安装生成rsa秘钥工具(bin--openssl.exe使用)"则是实际执行RSA密钥生成的程序。这个bin文件(openssl.exe)是一个可执行文件,它包含了OpenSSL的部分功能,主要用于生成RSA密钥对。用户只需运行这个文件并按照...

    openssl 免安装版

    在本篇文章中,我们将深入探讨如何使用 OpenSSL 的免安装版本来生成公私钥对,这对于网络安全、加密通信以及数字签名等方面都至关重要。 **公私钥基础知识** 在公钥密码学中,公钥和私钥是一对密钥。公钥是公开的...

    秘钥生成工具.rar

    **RSA密钥生成工具** RSA是一种非对称加密算法,...总的来说,RSA秘钥生成工具和OpenSSL对于理解和实现网络安全至关重要。通过生成和管理RSA密钥对,我们可以确保数据在传输过程中的安全,防止未经授权的访问和篡改。

    支付公钥秘钥的说明使用

    1. **生成密钥**:使用密钥生成工具(如OpenSSL等)生成商户私钥和商户公钥。 2. **处理密钥**:将生成的商户公钥中的“-----BEGIN PUBLIC KEY-----”和“-----END PUBLIC KEY-----”删除,并去除所有的空格和换行符...

    openssl-win32绿色版

    3. **生成公钥**:有了私钥后,可以使用`openssl rsa -pubout`命令生成公钥,如`openssl rsa -pubout -in private_key.pem -out public_key.pem`,这会创建一个名为`public_key.pem`的公钥文件。 **服务器SSL应用**...

    基于Qt的密钥生成工具、密钥使用示例

    首先,Qt并不直接提供密钥生成和加密的功能,但我们可以借助Qt的网络和加密模块(如QSslSocket和QCryptographicHash)以及第三方库,如OpenSSL,来实现这些功能。Qt4、Qt5和Qt6都支持这些模块,因此这个工具能够兼容...

    Delphi RSA加解密【支持RSA公钥加密私钥解密,RSA私钥加密公钥解密,秘钥格式支持PKCS8和PKCS1】D7~XE10可用

    这个程序应该演示了如何生成RSA密钥对,使用公钥加密数据,然后使用私钥解密,反之亦然。在实际应用中,公钥可以公开,而私钥必须保密,确保数据的安全性。 PKCS(Public-Key Cryptography Standards)是由RSA ...

    OpenSSL.exe

    3. **秘钥管理**:OpenSSL提供了生成、管理和操作密钥对的工具。私钥必须严格保管,因为它用于解密数据和验证数字签名。公钥可以公开,用于加密数据和验证服务器的身份。 4. **SSL/TLS握手过程**:在建立安全连接时...

    openssl win7 64位

    **二、生成秘钥** 1. **生成 RSA 私钥**:使用 `openssl genpkey` 命令生成 RSA 私钥,例如生成 2048 位的私钥: ``` openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 ``` ...

    RSA1024 RSA2048算法密匙生成器

    `openssl`可能是一个OpenSSL的命令行工具集,用户可以直接通过命令行进行RSA密钥的生成、证书的创建等相关操作。 总的来说,这个压缩包提供了一套工具,用于生成和操作RSA算法的密钥,包括1024位和2048位的密钥,...

Global site tag (gtag.js) - Google Analytics