开放原子训练营第一季铜锁探密 铜锁构建Web在线加密工具库Go + React
简介
本文记录我参加开放原子训练营(第一季)铜锁探密活动,学习铜锁密码库和国密加密算法后,完成的小作品。
先简单介绍一下作品内容: 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
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13