开放原子训练营(第一季)铜锁探密:基于铜锁,在前端对登录密码进行加密,实现隐私数据保密性

本文将基于 铜锁(tongsuo)开源基础密码库实现前端对用户登录密码的加密,从而实现前端隐私数据的保密性。

首先,铜锁密码库是一个提供现代密码学算法和安全通信协议的开源基础密码库,在中国商用密码算法,例如 SM2、SM3、SM4、祖冲之等密码算法方面提供强大的能力。除此之外,对国际主流算法、同台加密算法等密码学也提供了功能。更多详细的功能,请参考官方文档

接下来,我会在 docker 环境中,基于 Ubuntu 20.04 容器镜像,结合 nodejs 实现对用户登录密码的加密。

安装 docker

首先,请先下载并安装 docker。点击链接转到下载地址。

我使用的是 macOS 系统,因此,我这里选择的是 macOS 版本的 docker。请根据自身系统选择相应的版本。

在这里插入图片描述

安装 docker 成功之后,打开你的命令行工具,并执行如下命令,创建一个 docker 容器:

docker run -d -it --name tongsuolab ubuntu:20.04 bash

上述代码中,创建了一个名为 tongsuolab 的 ubuntu20.04 容器,如下图所示:
å
此时,打开 docker 的应用程序,你也能在 docker 的 Containers 页面中找到:
在这里插入图片描述
接着,继续在命令行中执行如下命令,进入 docker 容器:

docker exec -it tongsuolab bash

在这里插入图片描述
至此,你就将 docker 的安装成功,并成创建容器。

下载铜锁密码库

我们将在容器中下载同事密码库。因为 ubuntu 自带 apt 命令,因此可以用过 apt 命令安装 git 命令下载铜锁密码库,并通过 make 命令编译它。

现在,我们先更新软件包索引,执行如下命令:

apt update

在这里插入图片描述

接着安装 git gcc, make, nodejs 开发工具

apt install git gcc make -y

在这里插入图片描述
现在,我们已经安装好了 git 工具。因此,可以使用 git 命令克隆铜锁密码库的代码,执行如下命令:

git clone https://github.com/Tongsuo-Project/Tongsuo

在这里插入图片描述
接着,对铜锁密码库进行一些配置,进入到 Tongsuo 文件夹下,执行如下命令:

cd Tongsuo
./config --prefix=/opt/tongsuo enable-ntls enable-ssl-trace -Wl,-rpath,/opt/tongsuo/lib64
--debug

在这里插入图片描述

最后,执行如下命令进行编译和安装:

make -j
make install

至此,你就将铜锁密码库成功安装了。你也可以通过如下命令查看安装情况:

ls -l /opt/tongsuo

在这里插入图片描述
以及通过 /opt/tongsuo/bin/tongsuo version 命令查看铜锁密码库的版本:
在这里插入图片描述

编写前端代码

安装开发环境

在前端中,我们将通过 nodejs 实现对用户登录密码的加密。本文中,我们将使用 SM3 和 SM4 两种方式进行演示。

由于 ubuntu20.04 版本中没有安装 NodeJS,因此我们还需要通过 apt 命令安装,执行如下命令:

apt install nodejs
node -v
v10.19.0
apt install npm
npm -v

但是,在 ubuntu20.04 中 nodejs 的最高版本被限制在了 10.19.0 ,不是最新的版本。因此,我们还需要更新 nodejs 的版本。

通过以下命令对 nodejs 的版本进行更新:

apt install curl

npm install n -g

n stable

在这里插入图片描述
当你执行 n stable 命令的时候,会提示 the node command changed location and the old location may be remembered in your current shell.

它的意思是虽然 nodejs 新版本安装了,但是系统记住的还是老版本的 nodejs。

这个时候,只需要执行下面这条命令即可切换为 新版本的 nodejs:

hash -r

在这里插入图片描述
到了这里,你已经成功底安装了前端需要的环境。但是,我们还需要编辑文件,因此还需要安装 vim 工具,执行如下命令:

apt install vim

编写代码

现在,我们来开始编写代码。要在前端中执行 shell 语句,一般通过第三方依赖包执行更方便,这里推荐使用 shelljs

现在,在命令行中创建一个名为 webapp 的文件夹:

mkdir webapp

在这里插入图片描述

接着,进入到 webapp 文件夹中,通过 vim 命令创建并编辑 index.js 文件:

vim index.js

此时会在命令行中打开 index.js,然后我们输入如下内容:
在这里插入图片描述
上述代码中,可以看到,我们使用 shelljs 来执行铜锁密码库的 sm3 和 sm4 加密。但是现在你还运行不了 index.js,或者说运行了会报错。因为我们还没有安装 shelljs 依赖库。

因此,在 webapp 文件夹下执行如下命令安装 shelljs

// 初始化 package.json 文件
npm init -y
// 安装 shelljs
npm install shelljs

安装成功后,我们再再 webapp 文件夹中执行如下命令执行 index.js

node index.js

此时,你会发现命令行中输入了如下结果,表示我们成功借助铜锁密码库对用户的登录密码进行了加密。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ImagineCode/article/details/130409728