标签:rsa加密 blank rip 填充 rsa 数字 默认 公钥 ret
一些说在前面的:
RSA是一种块加密的算法,所以对于明文需要将他们分成固定的块长度,考虑到输入的数据长度的问题,所以加解密的填充有好几种:
无填充,就是直接对明文进行加密
PKCS1。将数据长度分成密钥长度-11byte,比如密钥是1024bit,那么长度就是1024/8-11=117bytes,具体的格式:先填0,2,然后随机生成其他的byte,后面才是真正的数据
PKCS1_OAEP将数据长度分成密钥长度-41byte,比如密钥是1024bit,那么长度就是1024/8-41=77bytes,先填0,随机或者是固定的测试向量加20个bytes,然后加20个数字签名的数据,最后才是数据
SSLV23,将数据长度分成密钥长度-11byte,比如密钥是1024bit,那么长度就是1024/8-11=117bytes,具体的格式:先填0,2,填入8个3,填入一个‘\0‘,最后才是真正的数据。
import NodeRSA from ‘node-rsa‘ RSA_PUBLIC_KEY = ‘公钥’ function rsaEncrypt (message, key) { let clientKey = new NodeRSA(RSA_PUBLIC_KEY) let encrypted = clientKey.encrypt(message, ‘base64‘) return encrypted }
function rsaEncrypt (message, key) { let clientKey = new NodeRSA(RSA_PUBLIC_KEY) // 在node-rsa模块中加解密默认使用 pkcs1_oaep ,而在js中加密解密默认使用的是 pkcs1 clientKey.setOptions({encryptionScheme: ‘pkcs1‘}) //就是新增这一行代码 let encrypted = clientKey.encrypt(message, ‘base64‘) return encrypted }
标签:rsa加密 blank rip 填充 rsa 数字 默认 公钥 ret
原文地址:http://www.cnblogs.com/xiaomiaichimi/p/7251543.html