• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

开放原子训练营第一季铜锁探密 铜锁构建Web在线加密工具库Go + React

武飞扬头像
magicwindyyd
帮助5

简介

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

先简单介绍一下作品内容: 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,方便开发者使用。

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfiebaf
系列文章
更多 icon
同类精品
更多 icon
继续加载