📜  Node.js 中的加密模块是什么以及它是如何使用的?

📅  最后修改于: 2022-05-13 01:56:30.406000             🧑  作者: Mango

Node.js 中的加密模块是什么以及它是如何使用的?

Node.js 是基于 Chrome 的 V8 JavaScript 引擎构建的开源和跨平台运行时环境,用于在浏览器之外执行 JavaScript 代码。 Node.js 支持大量第三方模块,这些模块有助于执行许多不同类型的任务。 Crypto 模块是帮助加密或解密或散列任何数据的第三方模块之一。我们希望从外部保护它。该模块的主要函数是将纯文本或数据转换为不可读的加密格式(hashed, CipherText)。

crypto 和 bycrypto 两个第三方模块用于保护敏感数据。 crypto 和 crypto 模块之间的主要区别在于,与 crypto 模块相比,bycrypto 模块执行了强大的散列。因此,如果我们想要执行强大的散列,我们会更喜欢 bycrypto 模块,否则使用 crypto 模块。

纯文本:我们编写或键入的任何人类可以理解的内容都称为纯文本。它可以包含任何字符(a-zA-Z0-9!,@,#….)。例如。我们的密码

密文: sdfasc1asT67W2sqWwsdfsadf 你能看懂这个词吗?这是一个密文,是通过算法传递纯文本生成的不可读和不可理解的文本。

密码学中的机制:

散列:这是一种将纯文本转换为密文的机制。它是一种单向加密函数,即我们不能将密文转换为纯文本。它广泛用于身份验证系统,以避免将纯文本密码存储在数据库中,但也用于验证文件、文档和其他类型的数据。 Message Digest 5(MD5)、RSA、SHA等是广泛使用的散列算法。

加密和解密:加密算法接受输入和密钥并生成称为密文的随机输出。该操作是可逆的。解密是加密的逆过程。该算法采用相同的密钥和密文,并返回我们原来的纯文本。这在 WhatsApp 等消息系统中广泛使用。 AES 等 广泛用于加密和解密的算法。

Node.js 中 Crypto 的特点

  • 很容易上手
  • 许多广泛使用的算法都有不同的版本
  • 源代码更清晰和一致。
  • 它在任何地方都使用 JavaScript,因此您可以将它与 node.js 一起使用

安装模块:

npm install crypto-js --save

项目结构:

我们可以通过两种方式使用这个模块,要么用于散列,要么用于数据的加密和解密。有很多算法可用于散列以及数据的加密和解密。

使用加密模块对数据进行哈希处理:

index.js
// Importing module
var SHA256 = require("crypto-js/sha256");
 var plaindata = "GeeksForGeeks"
var hasheddata = SHA256(plainText).toString()
console.log(hasheddata)


index.js
// Importing the crypto module
const crypto=require("crypto-js")
  
var data = "This is the data that need to be encrypted"
  
var key = "password@111"
  
// Encrypte the data
var encrypted = crypto.AES.encrypt(data, key).toString();
console.log("Encrypted data")
  
// Printing the encrypted data
console.log(encrypted)
console.log("Decrypted data")
  
// Decrypting the data
var decrypted = crypto.AES.decrypt(encrypted, key)
    .toString(crypto.enc.Utf8)
console.log(decrypted)


使用以下命令运行index.js文件:

node index.js

输出:

使用加密模块对数据进行加密和解密:

我们将使用密钥对数据进行加密和解密。单个密钥可以用于数据的加密以及数据的解密过程。下面是使用单个密钥对数据进行加密和解密的示例。

index.js

// Importing the crypto module
const crypto=require("crypto-js")
  
var data = "This is the data that need to be encrypted"
  
var key = "password@111"
  
// Encrypte the data
var encrypted = crypto.AES.encrypt(data, key).toString();
console.log("Encrypted data")
  
// Printing the encrypted data
console.log(encrypted)
console.log("Decrypted data")
  
// Decrypting the data
var decrypted = crypto.AES.decrypt(encrypted, key)
    .toString(crypto.enc.Utf8)
console.log(decrypted)

使用以下命令运行index.js文件:

node index.js

输出: