相关文章推荐
深情的卡布奇诺  ·  java中JSONArray互相转换List ...·  2 年前    · 
性感的小摩托  ·  python ...·  2 年前    · 
非常酷的双杠  ·  html2canvas样式丢失-掘金·  2 年前    · 
英勇无比的水煮肉  ·  深度神经网络模型训练时GPU显存不足怎么办? ...·  2 年前    · 
Code  ›  Node.js · phpseclib
rsa
https://phpseclib.com/docs/nodejs
勤奋的手电筒
2 年前
phpseclib

phpseclib

  • Docs
  • API
  • Support
  • GitHub
  • For Enterprise

› Interoperability

Introduction

  • Why phpseclib?
  • Installation
  • Speed

SSH2

  • Connecting
  • Authenticating
  • Running Commands
  • SFTP
  • Diagnosing Issues

Public Keys

  • Overview
  • RSA
  • DSA
  • Elliptic Curves
  • (EC)DH

Symmetric Keys

  • Overview

X.509

  • X.509
  • CSR
  • SPKAC
  • CRL

Interoperability

  • Overview
  • Python
  • Java
  • JavaScript
  • Node.js
  • Ruby
  • C#
  • C
  • PHP

Node.js

AES-128-CBC Decryption with CryptoJS

Encryption with PHP:

use phpseclib3\Crypt\AES;
$cipher = new AES('cbc');
$cipher->setKey(str_repeat('a', 16));
$cipher->setIV(str_repeat('b', 16));
echo bin2hex($cipher->encrypt('test'));

Decryption with Node.js / CryptoJS:

var CryptoJS = require('crypto-js');
var key = CryptoJS.enc.Utf8.parse('aaaaaaaaaaaaaaaa');
var iv = CryptoJS.enc.Utf8.parse('bbbbbbbbbbbbbbbb');
var ciphertext = CryptoJS.enc.Hex.parse('10f42fd95857ed2775cfbc4b471bc213');
ciphertext = {ciphertext: ciphertext};
var plaintext = CryptoJS.AES.decrypt(ciphertext, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC
console.log(plaintext.toString(CryptoJS.enc.Utf8));

RSA Decryption

Encryption with PHP:

use phpseclib3\Crypt\PublicKeyLoader;
$key = PublicKeyLoader::load('-----BEGIN RSA PUBLIC KEY-----
MEgCQQCo9+BpMRYQ/dL3DS2CyJxRF+j6ctbT3/Qp84+KeFhnii7NT7fELilKUSnx
S30WAvQCCo2yU1orfgqr41mM70MBAgMBAAE=
-----END RSA PUBLIC KEY-----');
$key = $key->withPadding(RSA::ENCRYPTION_PKCS1);
echo base64_encode($key->encrypt('test'));

Decryption with Node.js:

var crypto = require('crypto');
var ciphertext = "L812/9Y8TSpwErlLR6Bz4J3uR/T5YaqtTtB5jxtD1qazGPI5t15V9drWi58colGOZFeCnGKpCrtQWKk4HWRocQ==";
ciphertext = Buffer.from(ciphertext, 'base64');
var key = `-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6Ppy1tPf9Cnzj4p4WGeKLs1Pt8Qu
KUpRKfFLfRYC9AIKjbJTWit+CqvjWYzvQwECAwEAAQJAIJLixBy2qpFoS4DSmoEm
o3qGy0t6z09AIJtH+5OeRV1be+N4cDYJKffGzDa88vQENZiRm0GRq6a+HPGQMd2k
TQIhAKMSvzIBnni7ot/OSie2TmJLY4SwTQAevXysE2RbFDYdAiEBCUEaRQnMnbp7
9mxDXDf6AU0cN/RPBjb9qSHDcWZHGzUCIG2Es59z8ugGrDY+pxLQnwfotadxd+Uy
v/Ow5T0q5gIJAiEAyS4RaI9YG8EWx/2w0T67ZUVAw8eOMB6BIUg0Xcu+3okCIBOs
/5OiPgoTdSy7bcF9IGpSE8ZgGKzgYQVZeN97YE00
-----END RSA PRIVATE KEY-----`;
key = crypto.createPrivateKey(key);
var plaintext = crypto.privateDecrypt(
        key: key,
        padding: crypto.constants.RSA_PKCS1_PADDING
    ciphertext
console.log(plaintext.toString('ascii'));

PKCS8 keys are supported as well as OAEP padding.

RSA Decryption with NodeRSA

Encryption with PHP:

use phpseclib3\Crypt\PublicKeyLoader;
$key = PublicKeyLoader::load('-----BEGIN RSA PUBLIC KEY-----
MEgCQQCo9+BpMRYQ/dL3DS2CyJxRF+j6ctbT3/Qp84+KeFhnii7NT7fELilKUSnx
S30WAvQCCo2yU1orfgqr41mM70MBAgMBAAE=
-----END RSA PUBLIC KEY-----');
$key = $key->withPadding(RSA::ENCRYPTION_PKCS1);
echo base64_encode($key->encrypt('test'));

Decryption with Node.js / NodeRSA:

var NodeRSA = require('node-rsa');
var key = new NodeRSA(`-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6Ppy1tPf9Cnzj4p4WGeKLs1Pt8Qu
KUpRKfFLfRYC9AIKjbJTWit+CqvjWYzvQwECAwEAAQJAIJLixBy2qpFoS4DSmoEm
o3qGy0t6z09AIJtH+5OeRV1be+N4cDYJKffGzDa88vQENZiRm0GRq6a+HPGQMd2k
TQIhAKMSvzIBnni7ot/OSie2TmJLY4SwTQAevXysE2RbFDYdAiEBCUEaRQnMnbp7
9mxDXDf6AU0cN/RPBjb9qSHDcWZHGzUCIG2Es59z8ugGrDY+pxLQnwfotadxd+Uy
v/Ow5T0q5gIJAiEAyS4RaI9YG8EWx/2w0T67ZUVAw8eOMB6BIUg0Xcu+3okCIBOs
/5OiPgoTdSy7bcF9IGpSE8ZgGKzgYQVZeN97YE00
-----END RSA PRIVATE KEY-----`);
key.setOptions({encryptionScheme: 'pkcs1'});
var ciphertext = 'L812/9Y8TSpwErlLR6Bz4J3uR/T5YaqtTtB5jxtD1qazGPI5t15V9drWi58colGOZFeCnGKpCrtQWKk4HWRocQ==';
 
推荐文章
深情的卡布奇诺  ·  java中JSONArray互相转换List的实现_java_脚本之家
2 年前
性感的小摩托  ·  python 随机文字颜色_mob649e8168b406的技术博客_51CTO博客
2 年前
非常酷的双杠  ·  html2canvas样式丢失-掘金
2 年前
英勇无比的水煮肉  ·  深度神经网络模型训练时GPU显存不足怎么办? - 知乎
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号