Windows11安装node.js——npm安装crypto-js库——实战某网址获取加密解密算法

一、安装环境

本教程演示的环境

系统:win 11 64位
node.js下载地址: http://nodejs.cn/
node.js版本:长期支持版本(本教程基于16.15.0)
二、安装步骤

1、双击安装包,一直点击下一步。

2、点击change按钮,更换到自己的指定安装位置,点击下一步(不修改默认位置也是可以的 )。

3、一直点击下一步,最后安装成功即可。

三、验证安装

1、在键盘按下【win+R】键,输入cmd,然后回车,打开命令行界面
2、进入命令提示符窗口,分别输入以下命令,显示版本号,则安装成功

node -v        显示安装的nodejs版本
npm -v        显示安装的npm版本
四、修改全局模块下载路径

1、我希望将全模块所在路径和缓存路径放在我node.js安装的文件夹中,则在我安装的文件夹【D:\DevTools\Environment\nodejs】下创建两个文件夹【node_global】及【node_cache】如下图:
在这里插入图片描述

创建完两个空文件夹之后,跟之前操作一样,在键盘按下【win+R】键,输入cmd,然后回车,打开命令行界面,输入下面命令。

prefix = 创建的node_global文件夹所在路径
cache  = 创建的node_cache文件夹所在路径
-------------------------------------------------------------------------------
npm config set prefix "D:\DevTools\Environment\nodejs\node_global"
npm config set cache "D:\DevTools\Environment\nodejs\node_cache"

2、修改系统环境变量
右键我的电脑,选择属性
在这里插入图片描述

在打开的窗口中选择高级系统设置
在这里插入图片描述
选择环境变量
在这里插入图片描述
选择系统变量的Path变量,新增node_global文件夹的路径
在这里插入图片描述
经过上面的步骤,nodejs下载的模块就会自动下载到我们自定义的目录,接下来我们测试一下。输入下面的命令:

npm install express -g     # -g是全局安装的意思,不加 -g 就是默认下载到当前目录

如图,下载成功,我们回到我们定义的目录查看。
可以看到,下载的express模块以及成功下载到全局的指定目录。
在这里插入图片描述
注:若执行命令npm install express -g 出现如下报错
在这里插入图片描述
是由于权限的原因,右击Nodejs文件夹->属性->安全,点击编辑,将所有权限都✔即可。
在这里插入图片描述

五、更换npm源为淘宝镜像

说明:npm 默认的 registry ,也就是下载 npm 包时是从国外的服务器下载,国内很慢,一般都会指向淘宝 https://registry.npm.taobao.org。 1、查看初始npm源,如图:

npm config get registry

2、更换镜像为淘宝镜像

npm config set registry https://registry.npm.taobao.org/

3、检查配置是否成功

npm config get registry
六、全局安装基于淘宝源的cnpm(或安装yarn也可以)

说明:由于npm的服务器在海外,所以访问速度比较慢,访问不稳定 ,cnpm的服务器是由淘宝团队提供 服务器在国内cnpm是npm镜像,一般会同步更新,相差在10分钟,所以cnpm在安装一些软件时候会比较有优势。但是一般cnpm只用于安装时候,所以在项目创建与卸载等相关操作时候我们还是使用npm。 1、全局安装基于淘宝源的cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

2、下载完后,我们在本地就能看到cnpm模块
在这里插入图片描述
3、执行命令查看cnpm是否安装成功

cnpm -v
 七、安装crypto-js库

crypto-js 是一个纯 javascript 写的加密算法类库 ,可以非常方便地在 javascript 进行 MD5SHA1SHA2SHA3RIPEMD-160 哈希散列,进行 AESDESRabbitRC4Triple DES 加解密。

npm install -g crypto-js
八、使用

ES6模块引入方法:

import sha256 from 'crypto-js/sha256';

import hmacSHA512 from 'crypto-js/hmac-sha512';

import Base64 from 'crypto-js/enc-base64';

模块加载引入方法:

import sha256 from 'crypto-js/sha256';

import hmacSHA512 from 'crypto-js/hmac-sha512';

import Base64 from 'crypto-js/enc-base64';

页面标签引入方法:

<script type="text/javascript" src="path-to/bower_components/crypto-js/crypto-js.js"></script>

<script type="text/javascript">

    var encrypted = CryptoJS.AES(...);

    var encrypted = CryptoJS.SHA256(...);

</script>
九、项目中使用实例

这里我以 React 作为例子,其他的也就大同小异了。

  • 第一步:封装工具类

我们可以写一个工具类,专门封装加密解密的方法,比如我新建一个 cryptoAES.js 的文件,放在 utils 目录下(放哪无所谓),代码如下:

const CryptoJS = require('crypto-js');  //引用AES源码js

    

const key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF");  //十六位十六进制数作为密钥

const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412');   //十六位十六进制数作为密钥偏移量


//解密方法

function (word) {

    let encryptedHexStr = CryptoJS.enc.Hex.parse(word);

    let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);

    let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });

    let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);

    return decryptedStr.toString();

}



//加密方法

function Encrypt(word) {

    let srcs = CryptoJS.enc.Utf8.parse(word);

    let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });

    return encrypted.ciphertext.toString().toUpperCase();

}


export default {

  Decrypt ,

  Encrypt

}

上面的代码中的 key 是密钥 ,iv 是密钥偏移量,这两个参数前后端协定好保持一致,相当是我们的小秘密,不能告诉别人,不然加密的意义就没了。

值得注意的是密钥的长度,由于对称解密使用的算法是 AES-128-CBC 算法,数据采用 PKCS#7 填充 , 因此这里的 key 需要为16位!

接着我们定义了解密方法 Decrypt 和加密方法 Encrypt,最后通过 export 和 default 将其暴露出去,方便在需要的时候进行引入....

工具类写好了,很简单,然后是怎么使用了~

  • 第二步:使用工具类

我们有一个 index.tsx 文件,在这里面使用加密和解密的方法。

这里我只演示加密,解密同理。


import { Decrypt, Encrypt } from '/utils /cryptoAES.js';

//比如我组装好了拼接的参数

const str = '103170,112425366,253.00,20210428173700'

Encrypt(str)

加密后的结果是:

hoDfJ9U+uY+v8wYKdudbTUR+Z7g1Ui9YraVhfD9g2fMipYlFxnoLE0qbf+YsnEuk

这里有个问题,加密后的字符串里面是包含了+号,发送的话,在进行地址解析时,会把 + 号转换为 空格, 直接导致参数不能正确传输,所以我们用到了 JS 的 encodeURIComponent(),将所有的 + 号 手动转换为 %2B 即可正常传输。

encodeURIComponent(str)

//返回新结果

hoDfJ9U%2BuY%2Bv8wYKdudbTUR%2BZ7g1Ui9YraVhfD9g2fMipYlFxnoLE0qbf%2BYsnEuk

好了,一个简单的前端加密的过程就写完了。

十、实战某网址获取加密算法

登录账户:user密码:123456  加密后的密码数据:A7428361DEF118911783F446A129FFCE

1、由此可见密码是在前端进行加密的,而且我们发现这是个xhr的请求

我们找到了加密模块,并跟踪进去

可以看出这便是他的加密模块,采用的加密方式是AEX,同时调用了crypto-js库。

 我们发现是encrypt的返回值正式我们的加密密码, 

这便是他的加密代码,继续深入把他加解密算法找出来


import CryptoJS from 'crypto-js'

const key = CryptoJS
  .enc
  .Utf8
  .parse("20171109124536982017110912453698");

const iv = CryptoJS
  .enc
  .Utf8
  .parse('2017110912453698'); //十六位十六进制数作为密钥偏移量

const encrypt = (word: string) => {
  let srcs = CryptoJS
    .enc
    .Utf8
    .parse(word);
  let encrypted = CryptoJS
    .AES
    .encrypt(srcs, key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    });
  return encrypted
    .ciphertext
    .toString()
    .toUpperCase();
}

export const passwordEncrypt = (password: string) => {
  if (typeof password === 'undefined') return undefined
  if (!password) return ''
  return encrypt(password)
}

 经过我们的不懈努力,终于找到了加解密的js文件

代码展示 

import CryptoJS from 'crypto-js'
const key = CryptoJS
    .enc
    .Utf8
    .parse("20171109124536982017110912453698");
const iv = CryptoJS
    .enc
    .Utf8
    .parse('2017110912453698'); //十六位十六进制数作为密钥偏移量
/**
 * @return {string}
 */
function Decrypt(word) {
    let encryptedHexStr = CryptoJS
        .enc
        .Hex
        .parse(word);
    let srcs = CryptoJS
        .enc
        .Base64
        .stringify(encryptedHexStr);
    let decrypt = CryptoJS
        .AES
        .decrypt(srcs, key, {
            iv: iv,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7
        });
    let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    return decryptedStr.toString();
}

/**
 * @return {string}
 */
function Encrypt(word) {
    let srcs = CryptoJS
        .enc
        .Utf8
        .parse(word);
    let encrypted = CryptoJS
        .AES
        .encrypt(srcs, key, {
            iv: iv,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7
        });
    return encrypted
        .ciphertext
        .toString()
        .toUpperCase();
}

export {Decrypt, Encrypt}

A7428361DEF118911783F446A129FFCE  123456  至此结束

总结

  • 使用加密的场景有很多,我这里只讲述了URL地址加密的场景,简单总结下:

  • 第一步:安装 crypto-js

  • 第二步:引入 crypto-js

  • 第三步:封装工具类(当然也可以直接使用)

  • 第四步:调用工具类

  • 第五步:使用 encodeURIComponent 方法转码,然后拼接

当然,这个是最基础的用法,想深入可查看官方文档!

除了实战是自己写的外,其余都是选取以下链接:

至于为何选取,原因充当笔记

windows11安装nodejs详解_win11安装nodejs-CSDN博客

加密解密之 crypto-js 知识-CSDN博客

### 回答1: 1. 首先,从官网下载Node.jsWindows安装包(https://nodejs.org/en/download/)。 2. 双击下载的安装包,按照提示进行安装。在安装过程中,可以选择安装路径和其他选项。 3. 安装完成后,打开命令行工具(cmd),输入node -v命令,查看Node.js的版本号,确认安装成功。 4. 接下来,安装npmNode.js的包管理工具)。在命令行中输入npm install npm -g命令,进行全局安装。 5. 安装完成后,可以使用npm命令来安装其他Node.js的模块和包。例如,输入npm install express命令,安装Express框架。 6. 安装完成后,可以在项目中使用require命令来引入已安装的模块和包。例如,使用var express = require('express')来引入Express框架。 7. 安装完成后,可以在命令行中输入npm命令来管理已安装的模块和包。例如,输入npm list命令,查看已安装的模块和包列表。 ### 回答2: Node.js是一个基于Chrome V8引擎的运行时环境,用于开发快速、可扩展的网络应用程序。它允许使用JavaScript编写服务器端应用程序,并提供了大量的模块和工具,可以简化开发过程。Node.js安装包可以从官网下载,安装过程很简单,下面我将介绍在Windows系统上如何安装Node.jsnpm。 第一步:下载Node.js安装包 进入Node.js官网(https://nodejs.org),找到下载页面,选择适合您Windows操作系统的安装包,一般默认下载最新的LTS版本。 第二步:安装Node.js 下载完成后,双击运行安装包,按照提示进行安装,选择默认选项即可。安装完成后,可以在命令行中输入node -v命令验证是否安装成功。 第三步:安装npm npm(Node Package Manager)是Node.js的包管理器,用于方便地安装、升级和卸载不同的Node.js模块。Node.js安装包中已包含了npm,可以通过命令行操作安装。 打开命令行窗口(Win+R打开运行窗口,输入cmd,回车),输入以下命令安装npmnpm install npm@latest -g 在Windows系统上,可能会遇到一些网络问题,无法直接下载需要的模块。这时可以通过更改npm镜像的方式解决。 输入以下命令更改npm的镜像: npm config set registry https://registry.npm.taobao.org 这是使用了淘宝镜像,速度很快,安装迅速。 第四步:检查安装 安装完成后,可以在命令行输入npm -v命令验证是否安装成功。如果显示npm的版本号,则表示安装成功。 总结: 以上就是在Windows系统上安装Node.jsnpm的方法,安装过程比较简单明了,如果你遇到了问题,可以参考官方文档或者在相关社区求助。Node.jsnpm安装对于进行JavaScript编程的开发者来说是非常必要的,可以让你更方便、快速地开发网络应用程序。 ### 回答3: 在Windows系统上安装Node.jsNPM(Node Package Manager)非常简单。以下是具体步骤: 1.下载Node.js安装程序:在官方网站(https://nodejs.org/)上,选择适合Windows系统的版本,然后下载安装程序。 2.安装Node.js:双击下载的安装程序,打开安装向导。接受默认设置,即可顺利安装Node.js。 3.验证安装是否成功:打开命令提示符或PowerShell,输入node -v,按回车键。如果看到版本号,则说明Node.js已正确安装。 4.安装NPMNode.js安装后,NPM也应该自动安装了。但建议使用以下命令检查是否有最新版本,并安装最新版本: npm install npm@latest -g 5.验证NPM是否成功安装:在命令提示符或PowerShell中,输入npm -v,按回车键。如果看到版本号,则说明NPM已正确安装。 至此,Node.jsNPM已成功安装到您的Windows系统上。要使用它们,可以在命令提示符或PowerShell中输入相应的命令,例如:node app.js或npm install。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值