在本章中,我们能学到:

1.Element 中的输入框、按钮、消息提示组件的使用
2.axios 发送异步数据的操作
3.用 Flask 框架开发一个完成的后端接口

项目源码地址:https://gitee.com/myrensheng/encryption

我们在网上搜索md5加密,会出来很多的网站,但是都是关于单个字符的的加密,其中加密算法有md5和sha加密。但是当我有1万条数据,如何加密,总不能一条一条的复制粘贴过去加密,这很不现实。

小凡决定先参考这些网站做一个简单的字符串加密网站,然后再做关于Excel文件的加密网站。

一、绘制网站页面

我们看这些网站都是由两个输入框,中间加上选项组成的,比如下面这种:

我们可以用element中的组件绘制出这样的页面。

1.1 绘制输入框

绘制输入字符串的文本框:

<el-input type="textarea" :rows="10" placeholder="请输入内容"
v-model="textareaEncryForm.input_textarea"
>
</el-input>

定义一个文本输入框

:row=“10” Vue语法中的动态绑定数据,表示高度 10px

v-model=“textareaEncryForm.input_textarea” Vue语法中的数据绑定,表示将文本输入框中的文字赋值给textareaEncryForm中的input_textarea变量

同理,我们可以绘制出加密后的文本框:

<el-input type="textarea" :rows="10" placeholder="加密后的内容"v-model="output_textarea">
</el-input>

1.2 绘制表单

form表单:

<el-form label-width="80px" :modle="textareaEncryForm">
<el-form-item></el-form-item>
</el-form>

label-width=“80px” 表示 el-form-item 中的 label 文字的宽度

:modle=“textareaEncryForm” 表示 form 表单中的数据绑定到该变量

form表单中的子组件,可以是单选框、下拉框等

下拉框,选择加密的方式:

<el-form-item label="加密算法">
<el-select v-model="textareaEncryForm.encryModel">
<el-option label="md5_32" value="md5_32"></el-option>
<el-option label="md5_16" value="md5_16"></el-option>
<el-option label="sha1" value="sha1"></el-option>
<el-option label="sha224" value="sha224"></el-option>
<el-option label="sha256" value="sha256"></el-option>
<el-option label="sha512" value="sha512"></el-option>
</el-select>
</el-form-item>

下拉框组件

下拉框中的选项

v-model=“textareaEncryForm.encryModel” 将 el-option 中的 value 值绑定到textareaEncryForm中的 encryModel变量中

单选框:

<el-form-item label="大写小写">
<el-radio-group v-model="textareaEncryForm.encryStyle">
<el-radio label="小写"></el-radio>
<el-radio label="大写"></el-radio>
</el-radio-group>
</el-form-item>

单选框

单选框中的选项

按钮:

<el-button type="primary" v-if="textareaEncryForm.input_textarea" @click="textareasubmitForm('textareaEncryForm')">
提交
</el-button>
<el-tooltip class="item" v-else effect="dark" content="填写需要加密的内容"
placement="top-start">
<el-button type="danger">提交</el-button>
</el-tooltip>
<el-button @click="textarearesetForm()">重置</el-button>

按钮组件

type=“primary” 表示按钮的颜色为 蓝色

这里使用 v-if 和 v-else 语法,当没有输入文字时,不会请求后端地址,减少接口的访问

@click=“textareasubmitForm(‘textareaEncryForm’)” 点击时触发该方法

二、flask后端接口

后端我们用flask写一个接口, 这个接口就是用来将前端输入的字符串发送给加密的函数,我们需要开发一个 http://127.0.0.1:5000/encryption 地址,使用POST方法,并且接受传递的参数。

from flask import Flask,render_template,request,jsonify
import hashlib app = Flask(__name__) def encryption_str(string, encry_model="md5_32", encry_style=True):
# 加密为 utf-8 编码
utf_8_str = str(string).encode("utf8")
# 函数字典
param_dict = {
"md5_32": hashlib.md5(utf_8_str),
"md5_16": hashlib.md5(utf_8_str),
"sha1": hashlib.sha1(utf_8_str),
"sha224": hashlib.sha224(utf_8_str),
"sha256": hashlib.sha256(utf_8_str),
"sha512": hashlib.sha512(utf_8_str)
}
encry_result = param_dict[encry_model].hexdigest()
if encry_model == 'md5_16':
encry_result = encry_result[8:-8]
# 返回结果
return encry_result if encry_style == "小写" else encry_result.upper() @app.route("/encryption",methods=["POST"])
def encryption():
# 获取 post 方式提交的数据
r_json = request.json
encry_content = r_json["encryContent"]
# 加密的算法
encry_model = r_json["encryModel"]
# 加密类型(大小写)
encry_style = r_json["encryStyle"]
# 返回数据
res = {
"status":200,
"output_textarea": encryption_str(encry_textarea, encry_model=encry_model, encry_style=encry_style),
"msg": "加密成功!"
}
return jsonify(res) if __name__ == "__main__":
app.run(debug=True,port=5000)

flask 中用 request.json 获取前端 post 方式传入的数据

使用 jsonify 将Python的字典类型转为 json 数据

三、前后端数据交互

我们用 axios 组件进行前后端数据交互,常用的写法:

async func(arg){

​ const {data:res} = await this.$http.post(url)

}

this.$message() 组件,用来提示消息

<!-- import Vue before Element -->
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<!-- import JavaScript -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<!--导入 axios 获取数据-->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js"></script> <script>
new Vue({
el:'#app',
data:function(){
output_textarea:null,
textareaEncryForm:{
encryModel: "md5_32",
encryStyle: '小写',
input_textarea:null,
encryContent:'textarea'
},
},
methods:{
async textareasubmitForm(textareaEncryForm){
const {data:res} = await this.$http.post("http://127.0.0.1:5000/encryption",this.textareaEncryForm)
if (res.status==200){this.$message({
showClose:true,message:res.msg,center:true,type:'success'
})} else {this.$message({
showClose:true,message:res.msg,center:true,type:'error'
})}
},
textarearesetForm(){
this.textareaEncryForm.encryModel = "md5_32";
this.textareaEncryForm.input_textarea = null;
this.textareaEncryForm.encryStyle = "小写";
this.output_textarea = null;
}
}
})
</script>

启动后端服务,即可访问到网站。

小凡不满足于只能加密字符串,接下来,小凡要思考如何加密 Excel 文件?

用Flask+Element+Vue搭建md5、sha加密网站的更多相关文章

  1. MD5/SHA加密

    public class EncryptUtil { public static String getEncrypt(String value , String encrypt_type){ Stri ...

  2. fastapi+vue搭建免费代理IP网站部署至heroku

    说明 最近需要用到一些HTTP的代理,用于爬虫去爬取信息,搜索了一些网站,貌似现在这类提供免费代理IP的网站很多,刚好最近看了点vue的视频,弄个网站练练. 部署到heroku,预览地址:点击这里 F ...

  3. Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC

    Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC 博客分类: Java/Security Javabase64macmd5sha     加密解密,曾经是我一 ...

  4. BASE64,MD5,SHA,HMAC加密與解密算法(java)

    package com.ice.webos.util.security; import java.io.UnsupportedEncodingException; import java.math.B ...

  5. JAVA加密技术-----MD5 与SHA 加密

    关于JAVA的加密技术有很多很多,这里只介绍加密技术的两种 MD5与 SHA. MD5与SHA是单向加密算法,也就是说加密后不能解密. MD5 ---信息摘要算法,广泛用于加密与解密技术,常用于文件校 ...

  6. MD5加密和sha加密

    sha加密原理Algorithm)又叫安全哈希加密技术,是当今世界最先近的加密算法.主要用于文件身份识别.数字签名和口令加密等. 对于明文信息A,通过SHA1算法,生成一条160位长的识别码B.且明文 ...

  7. MD5和SHA加密实现

    @Test public void TestMD5AndSHA() throws NoSuchAlgorithmException { String MD5=Md5("123456" ...

  8. password学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)

    Java 加密解密之消息摘要算法(MD5 SHA MAC) 消息摘要 消息摘要(Message Digest)又称为数字摘要(Digital Digest). 它是一个唯一相应一个消息或文本的固定长度 ...

  9. python 加密方式(MD5&sha&hashlib)

    1.MD5加密 import md5 m = md5.new() #或者m = md5.md5() m.update('123456') m.hexdigest() #或者md5.md5('12345 ...

  10. Java的单向加密算法MD5和SHA——加密和解密

    出自:http://www.cnblogs.com/onetwo/p/3875551.html 1.JDK中MD5和SHA加密的主要类 在JDK6.0中,与MD5与SHA密切相关的几个类的类图如下:  ...

随机推荐

  1. .net core 根据需求不同的数据有不同的颜色

  2. 模拟ATM系统 —— 用户注册、登录和用户操作页设计 、查询账号、退出账号功能

    开发工具:idea 一.项目步骤: 1.系统准备.首页设计 2.用户开户功能 3.用户登录功能 4.用户操作页设计 .查询账号.退出账号功能 5.用户存款功能 6.用户取款功能 7.用户转账功能 8. ...

  3. async/await和promise的执行顺序

    原题: async function async1() { console.log("async1 start"); await async2(); console.log(&qu ...

  4. MySQL---MGR保姆版

    一.环境清理: 三台机器都做: 1.修改主机名 2.修改/etc/hosts文件 3.关闭和禁用防火墙 4.关闭和禁用SELinux 5.生成密钥对 6.传输密钥对 7.验证免密登陆 yum remo ...

  5. Qt 按键添加图标

    1.开发环境:Qt5.12.2,QtCreate4.8.2 2.直接上代码 /* 按键上背景 */ QPixmap pixmap(":/Resourses/images/easyicon_n ...

  6. (python)正则表达式

    # -*- coding: utf-8 -*- import re def test_dot(): """ . => 表示匹配任意字符 ""&q ...

  7. Go语言的常用函数方法整理大全-实践总结

    文章目录 前言 一.数据类型与相互转化 1.1 常用的数据类型 1.2 常用数据类型的转化 1.2.1 整形转字符串 1.2.2 字符串转整形 1.2.3 浮点转字符串 1.2.4 字符串转浮点 二. ...

  8. cookie、session入门

    一.cookie是由http制定的 二.使用方法 1.原始方法 使用request接受Cookies请求头 使用response发送set-Cookies响应头 2.常用方法 response.add ...

  9. WebRTC 的音频弱网对抗之 NACK

    基础知识 音频的 NACK 机制在 WebRTC 中默认是关闭的. rtcp feedbacknack开启就可以了 WebRTC 的音频数据传输中,尽管对低延时有着很高的要求,但也实现了 NACK,以 ...

  10. 1.PS基本操作

    1.图片颜色变淡 1.新建一个白色的画板 什么尺寸都可以 只要能装得下你这张图 2.把这张图拖进去放到画板上 3.在右边找到这张图的图层 更改透明度到你觉得合适的程度 (我初步估计可能20%左右吧)