Nodejs iOS RSA学习搬运

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 模块.

原文链接: https://my.oschina.net/u/943746/blog/2885763

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值