基于openssl生成RSA公私钥对
参考地址:https://www.iteye.com/blog/xw-z1985-1837376
a)从网上下载openssl工具:http://www.slproweb.com/products/Win32OpenSSL.html
b)生成私钥
进入到openssl的bin目录下,执行以下命令:
openssl genrsa -out rsa_private_key.pem 1024
会在bin目录下看到新生成的私钥文件rsa_private_key.pem,文件内容如下:
<!--[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,文件内容如下:
<!--[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非对称加密是一种广泛应用的公钥加密算法,由Ron Rivest、Adi Shamir和Leonard ...通过学习和理解"RSA非对称加解密实例"的源码,开发者可以更好地掌握加密解密技术,并将其应用到实际项目中,保障数据的安全传输。
C#RSA非对称加解密,C#RSA非对称加解密类
本项目“C# RSA非对称加解密DLL”提供了一个C#实现的库,专门用于处理RSA加密和解密操作。下面将详细讨论RSA算法、C#中的实现以及如何使用DLL进行加解密。 1. RSA算法简介: RSA(Rivest-Shamir-Adleman)是一种非...
RSA非对称加解密是一种广泛使用的公钥密码学算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年发明,并以他们名字的首字母命名。该算法基于大素数和模块化算术的数学特性,实现了在不直接传递密钥的情况下...
RSA非对称加密解密RSA私钥加密 公钥解密的源码(基于.net的RSATest源代码) Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RSATest", "RSATest\RSATest.csproj", "{DA2CC842-DF95-4DEE-BECC-EB7F9971CC7A}...
RSA非对称加密算法是一种广泛应用于网络安全领域的加密技术,它基于数论中的大数因子分解难题,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因此得名RSA。这个算法的核心在于一对密钥:公钥和私钥。...
"RSA加解密及公钥密生成工具"这个文件可能是包含上述功能的Delphi源码文件或者一个简单的GUI应用程序,它提供了一个用户友好的界面,使得用户能够轻松地生成RSA密钥对,并进行加密和解密操作。 通过学习和理解这段...
一, ToolsUtil.java为主要加密解密的工具类。里面的Public.key加密字符,Private.key解密字符方法按项目修改路径。 二, Test为加密数据库用户名和密码,生成完成后可将其赋值到属性文件中。 三, Crypt.java文件...
RSA非对称加密解密程序是一种基于数学难题的加密技术,广泛应用于网络安全和数据保护领域。该程序利用RSA算法对照片等敏感数据进行加密,确保信息在传输过程中的安全性。RSA算法是 Rivest、Shamir 和 Adleman 三位...
RSA非对称加密则使用一对公钥和私钥,其中公钥用于加密,私钥用于解密。这种方式安全但效率较低,适合在不同实体间交换密钥或进行数字签名。在Java中,我们可以使用`java.security`包中的`KeyPairGenerator`, `...
RSA加解密demo go语言版本,代码简洁,可直接使用,适合用来做非对称加解密应用。也适合用来做算法研究使用。RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·...
登录时,用户的密码用明文传输...非对称加密算法常用RSA算法,秘钥使用base64编码成字符串,后端使用jdk8的标准API,前端使用jsencrypt.js进行RSA的对应操作。经过测试,本例中的前后端代码的加密解密计算结果是一致的。
公私钥加解密,内含秘钥获取,亲测可用,且加密字段长度不限
RSA非对称加密算法在IT领域中被广泛用于安全通信,特别是在登录系统中,它能够确保用户信息的安全传输。在给定的上下文中,我们看到一个C#和JavaScript结合的应用,用于实现登录过程中的密码加密和解密。下面将详细...
在 RSA 非对称加密算法中,公开密钥用于加密数据,而私密密钥用于解密数据。加密过程是通过公开密钥对数据进行加密,得到密文,然后服务器使用私密密钥将密文解密,获取原始数据。这种机制保证了数据的安全,因为...
java go RSA互相加解密 go rsa加密后可以用 java解密, java rsa加密后 可以用解密, 要把 txt文件中的秘钥和私钥 都复制粘贴到java 文件和go 文件 ,公钥和私钥统一才可以
`security.js`可能是一个包含RSA加密和解密功能的JavaScript库,可能提供了一种在前端实现RSA加解密的方法。在Web应用中,这种库常用于在用户与服务器之间安全地传输敏感数据,如登录凭证、信用卡信息等。`security....
综上所述,C语言实现RSA非对称加密解密涉及大整数运算、密钥生成、公钥加密和私钥解密等核心步骤,并可能需要借助外部库来提高效率和安全性。在实际编程时,需要考虑性能、安全性和错误处理等多个方面。
总的来说,RSA非对称加密在前端加密和后端解密的应用中,提供了一种强安全性的解决方案。前端使用公钥加密,保护数据在传输过程中的安全;后端用私钥解密,确保只有合法的服务器才能访问到敏感信息。这种方式广泛...
使用RSA非对称加密完成JavaScript前端RSA加密和分段加解密,最近研究了RSA非对称加密,关于什么是RSA,网上各种文章一搜一大把,但是关于如何使用RSA完成前端的组合加密解密,东西就非常少了,并且由于RSA的特性,一...