1.1 vue中使用crypto-js进行AES加密解密

     参考博客:https://www.cnblogs.com/qixidi/p/10137935.html

  1、初始化vue项目

      vue init webpack itany

      cd itany

      cnpm install

      npm install crypto-js    # 安装rypto-js

  2、使用

<template>
<div id="app">
<p @click="handleLogin">点击发送axiso请求</p> </div>
</template> <script>
import { mapActions } from 'vuex'
import CryptoJS from "crypto-js";
export default {
name: 'App',
methods: {
handleLogin () { // 1、Encrypt 加密
var cipherText = CryptoJS.AES.encrypt(
"my message",
"secretkey123"
).toString();
console.log(cipherText) // U2FsdGVkX1/Hjuv9Mt10c9Q/98PjhFSNXkmtz+sVaPU= // 2、Decrypt 解密
var bytes = CryptoJS.AES.decrypt(cipherText, "secretkey123");
var originalText = bytes.toString(CryptoJS.enc.Utf8);
console.log(originalText, typeof originalText); // 'my message' // 3、解析json格式
// var pjson = JSON.parse(originalText)
}
},
}
</script> <style> </style>

App.vue

      

1.2 python中进行AES加密解密模块

  1、安装与使用

      pip uninstall crypto pycryptodome

      pip install pycryptodome
# -*- coding:UTF-8 -*-
from Crypto import Random
from Crypto.Cipher import AES
import base64
from hashlib import md5 class EncDecAES(object):
def pad(self, data):
length = 16 - (len(data) % 16)
return data + (chr(length)*length).encode() def unpad(self, data):
return data[:-(data[-1] if type(data[-1]) == int else ord(data[-1]))] def bytes_to_key(self, data, salt, output=48):
assert len(salt) == 8, len(salt)
data += salt
key = md5(data).digest()
final_key = key
while len(final_key) < output:
key = md5(key + data).digest()
final_key += key
return final_key[:output] def encrypt(self, message, passphrase):
salt = Random.new().read(8)
key_iv = self.bytes_to_key(passphrase, salt, 32 + 16)
key = key_iv[:32]
iv = key_iv[32:]
aes = AES.new(key, AES.MODE_CBC, iv)
return base64.b64encode(b"Salted__" + salt + aes.encrypt(self.pad(message))) def decrypt(self, encrypted, passphrase):
encrypted = base64.b64decode(encrypted)
assert encrypted[0:8] == b"Salted__"
salt = encrypted[8:16]
key_iv = self.bytes_to_key(passphrase, salt, 32 + 16)
key = key_iv[:32]
iv = key_iv[32:]
aes = AES.new(key, AES.MODE_CBC, iv)
return self.unpad(aes.decrypt(encrypted[16:])) if '__main__' == __name__:
data = 'Data that needs to be encrypted!' # 要加密的数据
passphrase = 'secretkey123' # 加密解密用的秘钥 #1、加密
encMsg = EncDecAES().encrypt(data, passphrase)
print encMsg # U2FsdGVkX1/GaKnTiu4lQ6zuCwHB+SyN9ARgSZXLpJznjY38+cApNYL0qTdgQ3Iv #2、解密
decMsg = EncDecAES().decrypt(encMsg, passphrase)
print decMsg # Data that needs to be encrypted

crypto_aes.py

最新文章

  1. 初探java中this的用法
  2. JAVA静态代码审查之checkstyle
  3. iOS,Xcod7/8,iOS使用修改点
  4. AC日记——石子归并 codevs 1048
  5. ExtJS ComboBox的用法+代码
  6. HDU 4902
  7. 找不到或无法加载已注册的 .Net Framework Data Provide
  8. mac和windows系统下 eclipse svn 设置代理服务器
  9. Java socket通信
  10. HTTP协议相关知识点
  11. Spring有什么缺点?
  12. Python爬虫入门教程 7-100 蜂鸟网图片爬取之二
  13. flask(一)之路由和视图
  14. JS获取form表单数据
  15. ios UIButton设置高亮状态下的背景色
  16. vue中使用promise
  17. sublime的lua插件
  18. 20155325 2016-2017-2 《Java程序设计》第8周学习总结
  19. 服务器推技术研究Comet
  20. 010-spring cloud gateway-过滤器-自定义局部、全局过滤器、区别

热门文章

  1. 2018-2019-2 《网络对抗技术》Exp4 恶意代码分析 Week6 20165311
  2. java web 读取数据库数据写入Excel返回浏览器下载
  3. mysql本地安装
  4. spring-boot logback配置
  5. 如何修改运行中的docker容器的端口映射和挂载目录
  6. go语言生成一张正弦图
  7. C# Json解析Json = &quot;{\&quot;EX_RETURN\&quot;:[{\&quot;MATNR\&quot;:\&quot;test\&quot;}] }&quot;;
  8. MailKit使用IMAP读取邮件找不到附件Attachments为空的解决方法
  9. winrar目录穿越漏洞
  10. URLs ...