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
输出: