`

RSA非对称加解密

 
阅读更多

基于openssl生成RSA公私钥对

 

参考地址:https://www.iteye.com/blog/xw-z1985-1837376

 

a)从网上下载openssl工具:http://www.slproweb.com/products/Win32OpenSSL.html

  b)生成私钥

进入到opensslbin目录下,执行以下命令:

openssl genrsa -out rsa_private_key.pem 1024

会在bin目录下看到新生成的私钥文件rsa_private_key.pem,文件内容如下:

Xml代码  <!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="图片_x0020_2" o:spid="_x0000_i1026" type="#_x0000_t75" alt="收藏代码" href="javascript:void()" title="&quot;收藏这段代码&quot;" style='width:11pt; height:10.5pt;visibility:visible;mso-wrap-style:square' o:button="t"> <v:imagedata src="file:///C:/Users/WUDASH~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png" o:title="收藏代码"/> </v:shape><![endif]--><!--[if !vml]-->收藏代码<!--[endif]-->

<!--[if !supportLists]-->1.  <!--[endif]-->-----BEGIN RSA PRIVATE KEY-----  

<!--[if !supportLists]-->2.  <!--[endif]-->MIICXgIBAAKBgQDtd1lKsX6ylsAEWFi7E/ut8krJy9PQ7sGYKhIm9TvIdZiq5xzy  

<!--[if !supportLists]-->3.  <!--[endif]-->aw8NOLzKZ1k486MePYG4tSuoaxSbwuPLwVUzYFvnUZo7aWCIGKn16UWTM4nxc/+d  

<!--[if !supportLists]-->4.  <!--[endif]-->wce+bhcKrlLbTWi8l580LTE7GxclTh8z7gHq59ivhaoGbK7FNxlUfB4TSQIDAQAB  

<!--[if !supportLists]-->5.  <!--[endif]-->AoGBAIgTk0x1J+hI8KHMypPxoJCOPoMi1S9uEewTd7FxaB+4G5Mbuv/Dj62A7NaD  

<!--[if !supportLists]-->6.  <!--[endif]-->oKI9IyUqE9L3ppvtOLMFXCofkKU0p4j7MEJdZ+CjVvgextkWa80nj/UZiM1oOL6Y  

<!--[if !supportLists]-->7.  <!--[endif]-->HwH4ZtPtY+pFCTK1rdn3+070qBB9tnVntbN/jq0Ld7f0t7UNAkEA9ryI0kxJL9Pu  

<!--[if !supportLists]-->8.  <!--[endif]-->pO9NEeWuCUo4xcl9x/M9+mtkfY3VoDDDV1E/eUjmoTfANYwrjcddiQrO0MLyEdoo  

<!--[if !supportLists]-->9.  <!--[endif]-->tiLpN77qOwJBAPZhtv/+pqMVTrLxWnVKLZ4ZVTPPgJQQkFdhWwYlz7oKzB3VbQRt  

<!--[if !supportLists]-->10.<!--[endif]-->/jLFXUyCN2eCP7rglrXnaz7AYBftF0ajHEsCQQDDNfkeQULqN0gpcDdOwKRIL1Pp  

<!--[if !supportLists]-->11.<!--[endif]-->kHgWmWlg1lTETVJGEi6Kx/prL/VgeiZ1dzgCTUjAoy9r1cEFxM/PAqH3+/F/AkEA  

<!--[if !supportLists]-->12.<!--[endif]-->zsTCp6Q2hLblDRewKq7OCdiIwKpr5dbgy/RQR6CD7EYTdxYeH5GPu1wXKJY/mQae  

<!--[if !supportLists]-->13.<!--[endif]-->JV9GG/LS9h7MhkfbONS6cQJAdBEb5vloBDLcSQFDQO/VZ9SKFHCmHLXluhhIizYK  

<!--[if !supportLists]-->14.<!--[endif]-->Gzgf3OXEGNDSAC3qy+ZTnLd3N5iYrVbK52UoiLOLhhNMqA==  

<!--[if !supportLists]-->15.<!--[endif]-->-----END RSA PRIVATE KEY-----  

   c)生成公钥

bin目录下,执行以下命令:

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

会在bin目录下看到新生成的公钥文件rsa_public_key.pem,文件内容如下:

Xml代码  <!--[if gte vml 1]><v:shape id="图片_x0020_1" o:spid="_x0000_i1025" type="#_x0000_t75" alt="收藏代码" href="javascript:void()" title="&quot;收藏这段代码&quot;" style='width:11pt; height:10.5pt;visibility:visible;mso-wrap-style:square' o:button="t"> <v:imagedata src="file:///C:/Users/WUDASH~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png" o:title="收藏代码"/> </v:shape><![endif]--><!--[if !vml]-->收藏代码<!--[endif]-->

<!--[if !supportLists]-->1.  <!--[endif]-->-----BEGIN PUBLIC KEY-----  

<!--[if !supportLists]-->2.  <!--[endif]-->MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDtd1lKsX6ylsAEWFi7E/ut8krJ  

<!--[if !supportLists]-->3.  <!--[endif]-->y9PQ7sGYKhIm9TvIdZiq5xzyaw8NOLzKZ1k486MePYG4tSuoaxSbwuPLwVUzYFvn  

<!--[if !supportLists]-->4.  <!--[endif]-->UZo7aWCIGKn16UWTM4nxc/+dwce+bhcKrlLbTWi8l580LTE7GxclTh8z7gHq59iv  

<!--[if !supportLists]-->5.  <!--[endif]-->haoGbK7FNxlUfB4TSQIDAQAB  

<!--[if !supportLists]-->6.  <!--[endif]-->-----END PUBLIC KEY-----  

 

 

 

 

常见错误解决方案:

错误1

Exception in thread "main" java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : algid parse error, not a sequence

       at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:252)

       at java.security.KeyFactory.generatePrivate(KeyFactory.java:372)

       at com.jd.health.insurance.soa.common.util.RSAOpenUtil.decryptByPrivateKey(RSAOpenUtil.java:88)

       at com.jd.health.insurance.soa.common.util.RSAOpenUtil.decryptByPrivateKey(RSAOpenUtil.java:102)

       at com.jd.health.insurance.soa.common.util.RSAOpenUtil.main(RSAOpenUtil.java:143)

Caused by: java.security.InvalidKeyException: IOException : algid parse error, not a sequence

       at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:351)

       at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:356)

       at sun.security.rsa.RSAPrivateCrtKeyImpl.<init>(RSAPrivateCrtKeyImpl.java:130)

       at sun.security.rsa.RSAPrivateCrtKeyImpl.newKey(RSAPrivateCrtKeyImpl.java:80)

      at sun.security.rsa.RSAKeyFactory.generatePrivate(RSAKeyFactory.java:357)

       at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:248)

       ... 4 more

 

 

 

解决方案://这时候的私钥还不能直接被使用,需要进行PKCS#8编码:

openssl pkcs8 -topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt  

 

命令中指明了输入私钥文件为rsa_private_key.pem,输出私钥文件为pkcs8_rsa_private_key.pem,不采用任何二次加密(-nocrypt

 

分享到:
评论

相关推荐

    RSA非对称加解密实例

    RSA非对称加密是一种广泛应用的公钥加密算法,由Ron Rivest、Adi Shamir和Leonard ...通过学习和理解"RSA非对称加解密实例"的源码,开发者可以更好地掌握加密解密技术,并将其应用到实际项目中,保障数据的安全传输。

    C#RSA非对称加解密类

    C#RSA非对称加解密,C#RSA非对称加解密类

    C#RSA非对称加解密DLL

    本项目“C# RSA非对称加解密DLL”提供了一个C#实现的库,专门用于处理RSA加密和解密操作。下面将详细讨论RSA算法、C#中的实现以及如何使用DLL进行加解密。 1. RSA算法简介: RSA(Rivest-Shamir-Adleman)是一种非...

    PHP实现RSA非对称加解密的示例程序.zip

    RSA非对称加解密是一种广泛使用的公钥密码学算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年发明,并以他们名字的首字母命名。该算法基于大素数和模块化算术的数学特性,实现了在不直接传递密钥的情况下...

    RSA非对称加密解密RSA私钥加密 公钥解密的源码(基于.net的RSATest源代码).zip

    RSA非对称加密解密RSA私钥加密 公钥解密的源码(基于.net的RSATest源代码) Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RSATest", "RSATest\RSATest.csproj", "{DA2CC842-DF95-4DEE-BECC-EB7F9971CC7A}...

    RSA非对称加解密算法代码

    RSA非对称加密算法是一种广泛应用于网络安全领域的加密技术,它基于数论中的大数因子分解难题,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因此得名RSA。这个算法的核心在于一对密钥:公钥和私钥。...

    RSA非对称加密解密Delphi源码

    "RSA加解密及公钥密生成工具"这个文件可能是包含上述功能的Delphi源码文件或者一个简单的GUI应用程序,它提供了一个用户友好的界面,使得用户能够轻松地生成RSA密钥对,并进行加密和解密操作。 通过学习和理解这段...

    RSA非对称加密解密

    一, ToolsUtil.java为主要加密解密的工具类。里面的Public.key加密字符,Private.key解密字符方法按项目修改路径。 二, Test为加密数据库用户名和密码,生成完成后可将其赋值到属性文件中。 三, Crypt.java文件...

    RSA非对称加密解密程序

    RSA非对称加密解密程序是一种基于数学难题的加密技术,广泛应用于网络安全和数据保护领域。该程序利用RSA算法对照片等敏感数据进行加密,确保信息在传输过程中的安全性。RSA算法是 Rivest、Shamir 和 Adleman 三位...

    AES对称和RSA非对称加密解密

    RSA非对称加密则使用一对公钥和私钥,其中公钥用于加密,私钥用于解密。这种方式安全但效率较低,适合在不同实体间交换密钥或进行数字签名。在Java中,我们可以使用`java.security`包中的`KeyPairGenerator`, `...

    RSA非对称加解密demo-go语言版

    RSA加解密demo go语言版本,代码简洁,可直接使用,适合用来做非对称加解密应用。也适合用来做算法研究使用。RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·...

    前后端RSA非对称加密解密(代码示例).rar

    登录时,用户的密码用明文传输...非对称加密算法常用RSA算法,秘钥使用base64编码成字符串,后端使用jdk8的标准API,前端使用jsencrypt.js进行RSA的对应操作。经过测试,本例中的前后端代码的加密解密计算结果是一致的。

    RSA非对称加解密(Java版)

    公私钥加解密,内含秘钥获取,亲测可用,且加密字段长度不限

    RSA非对称 C#解密、js加密实现登陆密文传输

    RSA非对称加密算法在IT领域中被广泛用于安全通信,特别是在登录系统中,它能够确保用户信息的安全传输。在给定的上下文中,我们看到一个C#和JavaScript结合的应用,用于实现登录过程中的密码加密和解密。下面将详细...

    RSA非对称加密算法

    在 RSA 非对称加密算法中,公开密钥用于加密数据,而私密密钥用于解密数据。加密过程是通过公开密钥对数据进行加密,得到密文,然后服务器使用私密密钥将密文解密,获取原始数据。这种机制保证了数据的安全,因为...

    java go RSA互相加解密

    java go RSA互相加解密 go rsa加密后可以用 java解密, java rsa加密后 可以用解密, 要把 txt文件中的秘钥和私钥 都复制粘贴到java 文件和go 文件 ,公钥和私钥统一才可以

    rsa非对称加密,内含三个前端能用的加解密js

    `security.js`可能是一个包含RSA加密和解密功能的JavaScript库,可能提供了一种在前端实现RSA加解密的方法。在Web应用中,这种库常用于在用户与服务器之间安全地传输敏感数据,如登录凭证、信用卡信息等。`security....

    C语言代码实现RSA非对称加密、解密

    综上所述,C语言实现RSA非对称加密解密涉及大整数运算、密钥生成、公钥加密和私钥解密等核心步骤,并可能需要借助外部库来提高效率和安全性。在实际编程时,需要考虑性能、安全性和错误处理等多个方面。

    RSA非对称加密前端加密后端解密

    总的来说,RSA非对称加密在前端加密和后端解密的应用中,提供了一种强安全性的解决方案。前端使用公钥加密,保护数据在传输过程中的安全;后端用私钥解密,确保只有合法的服务器才能访问到敏感信息。这种方式广泛...

    JavaScript_RSA加解密+分段加解密.zip

    使用RSA非对称加密完成JavaScript前端RSA加密和分段加解密,最近研究了RSA非对称加密,关于什么是RSA,网上各种文章一搜一大把,但是关于如何使用RSA完成前端的组合加密解密,东西就非常少了,并且由于RSA的特性,一...

Global site tag (gtag.js) - Google Analytics