RSA非对称加密

前言

RSA是一个非对称的加密算法,使用一对公钥和私钥进行加密。使用公钥加密数据,使用私钥解密数据。或者使用私钥加密,公钥解密。

创建密钥

私钥一般分为 pkcs#1 pkcs#8 二种,pkcs#8 更通用一些

RSA私钥生成(==> PKCS#1)

openssl genrsa -out private_pkcs1.pem 2048

RSA私钥格式转换(PKCS#1 ==> PKCS#8)

openssl pkcs8 -in private_pkcs1.pem -out private_pkcs8.pem -topk8 -nocrypt

RSA私钥格式转换(PKCS#8 ==> PKCS#1)

openssl rsa -in private_pkcs8.pem -out private_pkcs1.pem

RSA公钥提取

openssl rsa -in private_pkcs1.pem -out public_pkcs8.pem -pubout
openssl rsa -in private_pkcs1.pem -out public_pkcs1.pem -pubout -RSAPublicKey_out

openssl rsa -in private_pkcs8.pem -out public_pkcs8.pem -pubout
openssl rsa -in private_pkcs8.pem -out public_pkcs1.pem -pubout -RSAPublicKey_out

RSA公钥格式转换(PKCS#8 ==> PKCS#1)

openssl rsa -in public_pkcs8.pem -out public_pkcs1.pem -pubin -RSAPublicKey_out

RSA公钥编码格式转换(PKCS#8:PEM ==> DER)

openssl rsa -pubin -in public_pkcs8.pem -out public_pkcs8.der -outform DER
openssl rsa -in private_pkcs8.pem -out private_pkcs1.der -outform DER

使用插件

jsencrypt https://www.npmjs.com/package/jsencrypt
注意:加密超过私钥长度的明文时候,会加密失败。需要使用分段加密。相应的后端也需要使用分段解密。
encryptlong https://www.npmjs.com/package/encryptlong

jsencrypt加密 java解密 例子

https://blog.csdn.net/u010457492/article/details/78331549

posted @ 2021-05-13 11:21  clintisgoodboy  阅读(148)  评论(0编辑  收藏  举报