Nodejs iOS RSA学习搬运
crypto和node-rsa进行了加解密实验!const crypto = require('crypto');const NodeRSA = require('node-rsa');let inputString = '我是明文字符串!';let publicKeyStr = '-----BEGIN PUBLIC KEY-----\n' +'MIGfMA0GCSqGSIb3DQEBAQUAA4
·
iOS上使用RSA:
OSStatus res = SecKeyEncrypt(_publicKey, kSecPaddingPKCS1, [data bytes], data.length, cipherText, &cipherTextSize);
此时kSecPaddingPKCS1是加密时指定的选项,对应的我们在node上也要设置该方式。
crypto 和 node-rsa 进行了加解密实验!
const crypto = require('crypto');
const NodeRSA = require('node-rsa');
let inputString = '我是明文字符串!';
let publicKeyStr = '-----BEGIN PUBLIC KEY-----\n' +
'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCe8g647gv...\n' +
'-----END PUBLIC KEY-----';
let privateKeyStr = '-----BEGIN PRIVATE KEY-----\n' +
'MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGB...\n' +
'-----END PRIVATE KEY-----';
let key = new NodeRSA(publicKeyStr);
key.setOptions({encryptionScheme: 'pkcs1'});
let encryptStr = key.encrypt(inputString, 'base64');
console.log(encryptStr);
key.importKey(privateKeyStr, 'pkcs8-private');
console.log(key.decrypt(encryptStr, 'utf8'));
encryptStr = crypto.publicEncrypt({key:publicKeyStr, padding: crypto.constants.RSA_PKCS1_PADDING}, Buffer.from(inputString, 'utf8'));
console.log(encryptStr.toString('base64'));
let decryptStr = crypto.privateDecrypt({key:privateKeyStr, padding: crypto.constants.RSA_PKCS1_PADDING}, encryptStr);
console.log(decryptStr.toString('utf-8'));
crypto.publicEncrypt(public_key, buffer)
使用 public_key
加密 buffer
。目前仅支持 RSA。
public_key
可以是对象或字符串。如果 public_key
是一个字符串,将会当做没有密码的key,并会用RSA_PKCS1_OAEP_PADDING
。
public_key
:
key
: 包含有 PEM 编码的私钥。padding
: 填充值,如下constants.RSA_NO_PADDING
constants.RSA_PKCS1_PADDING
constants.RSA_PKCS1_OAEP_PADDING
注意: 所有的填充值 定义于constants
模块.
crypto.privateDecrypt(private_key, buffer)
使用 private_key
来解密 buffer
.
private_key
:
key
: 包含有 PEM 编码的私钥passphrase
: 私钥的密码padding
: 填充值,如下:constants.RSA_NO_PADDING
constants.RSA_PKCS1_PADDING
constants.RSA_PKCS1_OAEP_PADDING
注意: 所有的填充值 定义于constants
模块.
更多推荐
已为社区贡献1条内容
所有评论(0)