📜  用于加密的 .net 和节点 js 通用库 - Javascript (1)

📅  最后修改于: 2023-12-03 14:56:19.696000             🧑  作者: Mango

用于加密的 .NET 和 Node.js 通用库 - JavaScript

简介

本文将介绍一个用于加密的 JavaScript 库,它适用于 .NET 和 Node.js 平台。该库提供了常见的加密算法,如对称加密、非对称加密、哈希等。使用者可以通过简单的 API 调用,使用这些算法对数据进行加密和解密。

安装

使用者可以通过 npm 进行安装:

npm install @remy/encryption-library
API

该库提供了以下的 API:

  • encrypt(data, key):使用 AES 算法对 data 进行加密,使用 key 作为密钥。
  • decrypt(data, key):使用 AES 算法对 data 进行解密,使用 key 作为密钥。
  • encryptWithPublicKey(data, publicKey):使用 RSA 非对称加密算法对 data 进行加密,使用 publicKey 作为公钥。
  • decryptWithPrivateKey(data, privateKey):使用 RSA 非对称加密算法对 data 进行解密,使用 privateKey 作为私钥。
  • hash(data, algorithm):使用指定的哈希算法对 data 进行哈希,支持的算法有 SHA-1、SHA-256 和 SHA-512。
使用示例
对称加密/解密
const { encrypt, decrypt } = require('@remy/encryption-library');

const data = 'Hello World!';
const key = 'secret-key';

const encrypted = encrypt(data, key);
const decrypted = decrypt(encrypted, key);

console.log('Encrypted:', encrypted);
console.log('Decrypted:', decrypted);

输出:

Encrypted: e0fn+1QLXJjnqrn0aAYMEvkdzWttP8GNbdRFqbJGwBY=
Decrypted: Hello World!
非对称加密/解密
const { encryptWithPublicKey, decryptWithPrivateKey } = require('@remy/encryption-library');

const data = 'Hello World!';
const publicKey = `-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMOzsbHd4GdtfOUVwZgOAV+7VbP0S0Ze
ulFIyjxTIN/vrzGl1Thz39bCjZAA0DfP0YP830nzpq3j1X6b2G6Xi8CAwEAAQ==
-----END PUBLIC KEY-----`;

const privateKey = `-----BEGIN PRIVATE KEY-----
MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAs7Oxsd3gZ2195RXB
mA4BX7tVs/RLRl66UUjKPFNIf++vMaXVOHPf1sKNkADQN8/Rg/zfSfOmr+Vfptob
peLwIDAQABAkBWr1onRiQuFN9pPwmJO0Mzw6TGeE6Th+A39jKmSMptZaxU6Vm3f6
KU6XQb6aH4G7Far4xl4i/kVrpjKFAJeoGv7hAiEA/iiLMIiJtpx/mYxbzWXLlsJc
w/KToJmI7rOA2QG29xECIQCP5f5aI9X3qKfZnUszZldDUDNuznpz8NTmW10wjRd+
hwIgQu/x9XGrE6Mdw74R7KjBXZpGBaInRIq6DSbUij/blsECIFKKTU6G4u0Qrlhn
1fEFZi0oKgS8TYBpMbE7hSEonDPjAiEAid4HnG4b7tzkZKGwtmqfjKuSCTErp00/
MgM1xhj7VlY=
-----END PRIVATE KEY-----`;

const encrypted = encryptWithPublicKey(data, publicKey);
const decrypted = decryptWithPrivateKey(encrypted, privateKey);

console.log('Encrypted:', encrypted);
console.log('Decrypted:', decrypted);

输出:

Encrypted: RFXKRqsM9c+9oYkqdjNoCJwz1+LcZ11r8W0J19TvE5I5D5/i/b9W3bqrs+Lvl/2wSlara04jlAFW1NqxVVym+TaLocxJNACK9anQuWYIY5v5NoBy1wTOZnIfJPKQrMJmCHtqs5HmJ5PUtMzJV4FS7JfXTGhxkZ7V0oW79S8=
Decrypted: Hello World!
哈希
const { hash } = require('@remy/encryption-library');

const data = 'Hello World!';

const sha1Hash = hash(data, 'SHA-1');
const sha256Hash = hash(data, 'SHA-256');
const sha512Hash = hash(data, 'SHA-512');

console.log('SHA-1 Hash:', sha1Hash);
console.log('SHA-256 Hash:', sha256Hash);
console.log('SHA-512 Hash:', sha512Hash);

输出:

SHA-1 Hash: 2ef7bde608ce5404e97d5f042f95f89f1c232871
SHA-256 Hash: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
SHA-512 Hash: 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f8c938481eccf2180e3475c2c9c8b9bbe239d6513f9475a5edd54e062b5e2fa9
总结

该库提供了常见的加密算法,使用简单,支持多种平台。使用该库可以方便地对敏感数据进行加密和解密,保证数据安全。