基于铜锁,在前端对登录密码进行加密,实现隐私数据保密性

news2024/11/25 12:26:04

本文将基于 铜锁(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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/472046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

京东T7架构师用470页就把微服务架构原理与开发实战文档讲完了

前言 最近几年软件开发方法层出不穷,微服务作为一种主流的架构模式一直热度不减。 为了帮助广大程序员们更好更快地理解微服务的概念,学习微服务在项目中的实践,本文全面阐述了微服务架构模式的特点、架构思路、设计理念、技术框架及具体的…

根据cadence设计图学习硬件知识day07 了解一些芯片

1.LC0502N (ESD静电保护元件) 1.1 LC0502N 介绍 应用 ● USB 2.0电源和数据线 ● 机顶盒和数字电视 ● 数字视频接口(DVI) ● 笔记型电脑 ● SIM端口 ● 10/100以太网 1.2 LC0502N 引脚介绍 (无语&#xff0…

1。C语言基础知识回顾

学习嵌入式的C基础知识,主要包括几个核心知识点:三大语法结构、常用的数据类型、函数、结构体、指针、文件操作。 一、顺序结构 程序自上而下依次执行、没有分支、代码简单。 常见顺序结构有:四则运算:,-&#xff0…

通达信顾比倒数线指标公式,信号不漂移

顾比倒数线是由技术派大师戴若顾比发明的,该指标利用三个重要的价格来判断入场或离场时机,可用于盘后制定下一个交易日的操作计划。此外,顾比倒数线还可以用于补充验证其他指标。 在编写顾比倒数线选股公式之前,需要先了解顾比倒…

vue3之vite创建h5项目之2 (sass公共样式、声明组件、路由配置和layout组件 )

目录 vue3之vite创建h5项目之2 ( )1:安装sass1-1 使用sass引入公共样式11-1-1 main.ts 引入公共样式方式 1-2 vite.config.ts 引入公共样式方式21-3样式文件1-3-1 src / style / index.scss ( 适配iphonex等还有引入其他公共的样式 )1-3-2 sr…

CRM部署Always on 后 CRM报无法更新数据库,数据库只读,且读写分离不正常

CRM部署Always on 后 CRM报无法更新数据库,数据库只读,读写分离不正常 问题描述背景信息问题原因解决方案 问题描述 CRM部署Always on 后 CRM报无法更新数据库,数据库只读 读写分离不正常,出现错乱链接。 背景信息 1.2个节点配置SQL serve…

从安全气囊到标配EDR,TOP10控制器供应商领跑市场

2022年1月1日开始,国内新生产新乘用车都必须标配EDR(Event Data Recorder),也就是俗称的汽车“黑匣子”,也称为汽车事件数据记录系统,记录的数据可重现事故过程,用于汽车事故分析。 在此之前&am…

【常用算法】进制转换

目录 1. 二进制数、八进制数、十六进制数转换为十进制数 2. 十进制数转换为二进制数、八进制数、十六进制数 3. 二进制数和十六进制数的相互转换 4. 使用电脑计算器进行进制转换 1. 二进制数、八进制数、十六进制数转换为十进制数 十进制数的每一位都是10的指数幂。如&…

基于趋动云的 Stable Diffusion Webui 环境搭建

Stable Diffusion Webui 环境搭建,首先新建一个项目: 然后,选择镜像。注意点公开的,已近做好的这个镜像,superx创建,集成了miniconda3的镜像。 然后选择添加数据源,一样,还是点公开&…

Epinio:Kubernetes 的应用程序开发引擎

王海龙,Rancher 中国社区技术经理,Linux Foundation APAC Evangelist,负责 Rancher 中国技术社区的维护和运营。拥有 9 年的云计算领域经验,经历了 OpenStack 到 Kubernetes 的技术变革,无论底层操作系统 Linux&#x…

A100单机多卡大模型训练踩坑记录(CUDA环境、多GPU卡住且显存100%)

踩坑1:服务器只装了 CUDA Driver 没装 CUDA Toolkit 系统:Ubuntu-18.04 用 deepspeed 跑百亿模型训练时,报关于 CUDA_HOME 的错误。 AssertionError: CUDA_HOME does not exist, unable to compile CUDA op(s)执行 echo $CUDA_HOME 和 nvcc…

HTB-Nineveh

HTB-Nineveh 信息收集80端口443端口80端口-新443端口-新 立足www-data -> amroisamrois -> root其他有意思的地方knock knock - Whos there?socket type 信息收集 80端口 目录扫描 /info.php目录 443端口 目录扫描 这完全没头绪,估计是信息收集漏了东西…

NCR被攻击后服务中断!原是BlackCat勒索软件作祟

近日,在遭到BlackCat勒索软件攻击后,NCR 的 Aloha 销售点平台出现中断。 NCR公司是全球关系管理技术解决方案领导供应商,为全球零售、金融、传讯、制造、旅游、交通及保安等客户提供服务。凭著累积多年的业界知识、专业顾问经验、专业增值应用…

手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%

大家好,我是微学AI,今天教你们本地CPU环境部署清华大ChatGLM-6B模型,利用量化模型,每个人都能跑动大模型。ChatGLM-6B是一款出色的中英双语对话模型,拥有超过62亿个参数,可高效地处理日常对话场景。与GLM-1…

数据备份系列:Rsync 备份详解(一)

一、Rsync 简介 1.1 Rsync 是一个远程增量文件备份软件工具 1.2 Rsync 的特性 支持拷贝特殊文件,如连接文件、设备等。可以有排除指定文件或目录同步的功能,相当于打包命令 tar 的排除功能。可以做到保持原文件或目录的权限、时间、软硬链接、属主、组…

MySQL中的锁有哪些,作用是什么?

概述: 锁最要是用来实现MySQL的隔离性。我们都知道事务有四大特性分别是:原子性、一致性、隔离性、持久性,即所说的ACID。 一、什么是ACID 1、原子性:事务中包含有很多操作,这些操作要么全部执行,要么全…

ShareSDK 抖音平台注册

注册开发者账号 进入抖音开放平台 :抖音开放平台 登录/注册账户 进入[控制台] —> [移动应用] —> [认证企业资质] 完成认证后提交 创建应用 进入[控制台] —> [移动应用] —> [创建移动应用] 填写相关信息同意隐私协议后提交 这里必须要填写好自己的…

移动端click事件300ms延迟

文章目录 移动端click事件300ms延迟问题原因解决将click事件放在touchstart或touchend中处理禁止双击缩放 移动端click事件300ms延迟 问题 在移动端中&#xff0c;点击屏幕的按钮会产生200~300ms的延迟响应&#xff0c;会导致用户认为页面卡顿问题。 如下&#xff1a; <…

备战2个月,四轮面试拿下字节offer...

背景 菜 J 一枚&#xff0c;本硕都是计算机&#xff08;普通二本&#xff09;&#xff0c;2021 届应届硕士&#xff0c;软件测试方向。个人也比较喜欢看书&#xff0c;技术书之类的都有看&#xff0c;最后下面也会推荐一些经典书籍。 先说一下春招结果&#xff1a;拿下了四个…

C++11中的线程类

前面介绍的线程是利用了POSIX线程库&#xff0c;这是传统C/C程序员使用线程的方式&#xff0c;而C11提供了语言层面使用线程的方式。 C11新标准中引入了5个头文件来支持多线程编程&#xff0c;分别是atomic、thread、mutex、condition_variable和future。 atomic&#xff1a;该…