简介

本文记录我参加开放原子训练营(第一季)铜锁探密活动,学习铜锁密码库和国密加密算法后,完成的小作品。

先简单介绍一下作品内容: Web在线加密工具库是一种提供加密算法在线使用的工具库,可以帮助用户快速、方便地加密数据。下面将介绍如何基于铜锁构建Web在线加密工具库,并使用docker快速部署。

铜锁介绍

铜锁/Tongsuo是一个提供现代密码学算法和安全通信协议的开源基础密码库,为存储、网络、密钥管理、隐私计算等诸多业务场景提供底层的密码学基础能力,实现数据在传输、使用、存储等过程中的私密性、完整性和可认证性,为数据生命周期中的隐私和安全提供保护能力。

构建应用

初始化项目

使用Goland作为IDE,先创建一个react项目。

后端我们可以使用hertz框架,hertz是字节推出的Web框架,使用简单,适合快速搭建Web应用程序。

编写Dockerfile

为了更方便的使用tongsuo,我使用docker来安装铜锁库,整个应用也跑在docker中,不会对我们本地的环境有影响,非常方便
首先,在docker中构建一个基于ubuntu镜像的环境,安装必要的依赖包,包括go、nodejs和tongsuo。然后,编译tongsuo以确保其能够正常运行。

封装铜锁API接口

在环境搭建完成后,由于铜锁目前还没有go的sdk,参考了一些大佬的思路,可以利用go编写命令,使用命令行来调用安装好的tongsuo库。

封装好工具类后,我们可以将铜锁API封装成RESTful API,来方便前端来调用。

构建前端页面

使用react和antd构建前端页面,实现简单的用户界面。用户可以在页面上输入需要加密的数据,选择加密算法,并将加密结果显示在页面上。

这里在开发时有一个细节,就是前后端跨域问题。前端使用的是create-react-app, 可以安装 http-proxy-middleware

npm install --save-dev http-proxy-middleware

然后再src目录下创建文件setupProxy.js

const { createProxyMiddleware } = require('http-proxy-middleware');module.exports = function(app) {app.use('/api',createProxyMiddleware({target: 'http://127.0.0.1:8888',changeOrigin: true,}));
};

这样我们的前端运行在3000端口,通过代理准发后,变成'http://127.0.0.1:8888' 就不会出现跨域的问题了。不过这里要注意,请求后端接口的函数,请求地址千万不要写死,要写相对路径。如果写死,这个代理的端口是不会生效的。

打包前端静态资源

我们打包前端为静态资源后,为了方便访问,直接把静态资源放在后端目录下,然后编写hertz的静态文件路由:

让go的服务器直接帮我们代理静态资源,直接访问后端的端口http://localhost:8888,就可以访问我们的密码箱应用了。

编写docker-compose.yml快速部署

使用docker-compose.yml文件描述应用程序的容器,包括后端API容器和前端页面容器,并设置相关参数,如端口号、环境变量等。使用docker-compose up -d命令,可以快速部署整个应用程序。

项目预览

完成部署后,您可以使用浏览器访问Web在线加密工具库,并使用提供的加密算法实现数据加密。在页面上输入需要加密的数据,选择加密算法,并点击“加密”按钮,加密结果将显示在页面上。

项目地址 t-camp加密工具箱

总结

本文介绍了如何基于铜锁构建Web在线加密工具库,并使用docker快速部署。通过封装铜锁API接口和构建前端页面,我们实现了一个简单的Web应用程序,可以帮助用户快速、方便地加密数据。

关于铜锁探秘活动,我觉得非常不错,让我一个的小白,了解并学习了我们平时https中TLS加密过程,还有颁发服务器,浏览器CA证书等一系列过程。整个学习过程都有铜锁训练营的老师详细带大家动手实践。

铜锁完全兼容openssl的API,所以大家不用担心在使用上有更多的学习成本,或者从openssl迁移会比较麻烦。但是现在铜锁存在的问题,我感觉文档还是不够完善,对于不同平台可能存在的bug,环境等问题,文档还是比较单一,具体怎么使用方面,最佳实践还是比较少,例子不够丰富,对于初学者而来说,使用起来还是比较困难的,希望铜锁能不断完善文档。另外还有各种语言的SDK,目前支持了python, PHP, Java.希望官方可以尽快推出其它语言的SDK,方便开发者使用。

我非常期待开放原子系列的活动,让国产的开源项目不断走到我们的生产开发中。而我作为开源项目的贡献值,非常支持!

开放原子训练营(第一季)铜锁探密 基于铜锁构建Web在线加密工具库(Go + React)相关推荐

  1. 开放原子训练营(第一季)铜锁探密,SM3杂凑算法加强至pro版

    目录 前言: 一.初遇铜锁 自我总结: 1.环境搭建,一次难忘的经历 2.键盘敲出的每一个命令,都是最美的音符 二.SM3杂凑算法增强改造 三.艺术源于生活 四.对开放原子开源基金会的感受 前言: 说 ...

  2. 【2023 · CANN训练营第一季】——Ascend C算子开发入门——第一次课

    前言:昇腾AI处理器的算子开发增加了一种新的方式,称之为TIK2,正式名称是Ascend C算子开发.不同于采用Python的DSL和TIK方式,Ascend C使用C/C++作为前端语言的算子开发工 ...

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

    本文将基于 铜锁(tongsuo)开源基础密码库实现前端对用户登录密码的加密,从而实现前端隐私数据的保密性. 首先,铜锁密码库是一个提供现代密码学算法和安全通信协议的开源基础密码库,在中国商用密码算法 ...

  4. 开放原子训练营(第二季)RT-Thread Nano学习营学习有感

    介绍 前几天有幸收到C站的训练营学习邀请,了解到这两天即将举行的开放原子 RTT 训练营.博主算是一名嵌入式方向的小白,主要还是在裸机上进行开发,但对嵌入式的操作系统和实时系统很感兴趣.在这次学习训练 ...

  5. 【2023·CANN训练营第一季】昇腾AI入门课(TensorFlow)学习总结

    最近AI可是非常火爆,ChatGPT成为互联网领域最大的风口,带来了各个行业的焦点,也产生了很多场景的AI应用,这将改变人与工具的交互方式,为我们生活提供更便捷的服务.        此次正好报名参加 ...

  6. 开放原子训练营(第三季)inBuilder低代码开发实验室:货运单的开发

    开放原子开源基金会(OpenAtom Foundation),是一个非盈利组织,致力于推广开源技术和开放创新.其宗旨是倡导合作伙伴间的信息共享和资源共享,鼓励开源社区的创造性和互助精神.该基金会提供资 ...

  7. 【2023 · CANN训练营第一季】昇腾AI入门课(PyTorch)第一章学习笔记——Hi Ascend

    第一章 昇腾AI基础知识 华为AI全栈的解决方案分为四层,分别是,芯片层,芯片使能层,AI框架层,应用使能层.那么这四个层面分别是用来做什么的呢?且看我娓娓道来. 1.芯片层 芯片层也叫Ascend层 ...

  8. 【2023 · CANN训练营第一季】晟腾AI入门课(TensorFlow)第一章 晟腾AI基础知识介绍

    本章学习目标 了解CANN在晟腾AI全栈架构中的位置和作用. 了解基于CANN的应用开发编程框架.基本概念. 晟腾AI全栈架构 晟腾AI全栈可以分差四个大部分: 应用使能层面,此层面通常包含用于部署模 ...

  9. 【MindStudio训练营第一季】MindStudio安装及测试

    MindStudio安装及测试 环境准备 安装CANN开发套件包 安装方案 其他注意事项(==都是血的教训==) 安装MindStudio 下载安装包 安装依赖 安装字体 安装MindStudio 测 ...

最新文章

  1. 【Appium】Appium工作原理
  2. 在Github上搭建Jekyll博客和创建主题
  3. linux socket 详解
  4. Linux学习笔记三--vim
  5. 安卓开发面试题及答案,一次哔哩哔哩面试经历,年薪50W
  6. 【设计模式系列】行为型之责任链模式
  7. 毕业之后,这些年薪 50w+ 的 90 后程序员都经历了什么?纯水贴
  8. linux云自动化运维,linux云自动化系统运维17(延时服务及定时服务)
  9. Java连接程序数据源
  10. 七月最后一波!微软专属内推码等你来抢
  11. spring学习---IOC--基于xml--bean管理--spring创建对象--spring注入属性--其他属性注入--外部bean--内部bean
  12. C++面向对象高级编程(上) 第三周笔记 GeekBand
  13. thinkphp5 接收layui上传的文件
  14. 计算机网卡ip怎么设置,怎样为网卡配置ip地址 电脑给网卡设置IP地址的方法有哪些...
  15. Vue3:自定义指令directive
  16. 嵌入式期末大作业——家用智能晾衣杆
  17. 小黄车卖蜂蜜啦。。。
  18. lanswich交换机VLAN配置
  19. 概念澄清:如何直接拿到promise的返回值
  20. struts2 漏洞测试工具

热门文章

  1. 现在程序员流行玩机器人了!
  2. haproxy mysql 配置_HAProxy + mysql 配置
  3. 基于STM32单片机的智能垃圾桶物联网智能家居系统语音识别智能垃圾桶无线手机蓝牙/WiFi APP按键矩阵键盘设计
  4. 百度百科即时搜索插件
  5. C# 读取EXCEL数据丢失,6万行数据只能读取13866行
  6. 查询商品案例(按价格或名称查询)
  7. JZOJ 4740 【雅礼联考GDOI2017模拟9.2】Zjr506的捕猫计划
  8. Common(四)—— Protocal
  9. MATLAB软件基础学习篇——002
  10. CentOS上Docker的安装卸载及Docker简介