<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>加密解密</title>
<link rel="stylesheet" type="text/css" href="css/index.css"/>
</head>
<body>
<h1>加密/解密</h1>
<div class="wrap">
<div class="edit">
<textarea name="" rows="" cols="" id="edit"></textarea>
</div>
<p>
<span>秘钥:</span><input type="text" name="" id="askey" value="" />
</p>
<p>
<span>矢量:</span><input type="text" name="" id="asvi" value="" />
</p>
<div class="btns">
<span class="btn en">加密</span>
<span class="btn den">解密</span>
</div>
<div class="">
<p>结果:</p>
<div class="result"> </div>
</div>
</div>
</body>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/crypto-js.js"></script>
<script type="text/javascript">
function getAesString(data,key,iv){//加密
let keyed = CryptoJS.enc.Utf8.parse(key); // 加密秘钥
let ived = CryptoJS.enc.Utf8.parse(iv); // 矢量
let encryptResult = CryptoJS.AES.encrypt(data,keyed, { // AES加密
iv: ived,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7 // 后台用的是pad.Pkcs5,前台对应为Pkcs7
});
return CryptoJS.enc.Base64.stringify(encryptResult.ciphertext); // Base64加密;
}
function getDAesString(data,key,iv){//解密
var keyed = CryptoJS.enc.Utf8.parse(key);
var ived = CryptoJS.enc.Utf8.parse(iv);
let baseResult=CryptoJS.enc.Base64.parse(data); // Base64解密
let ciphertext=CryptoJS.enc.Base64.stringify(baseResult); // Base64解密
let decryptResult = CryptoJS.AES.decrypt(ciphertext,keyed, { // AES解密
iv: ived,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return CryptoJS.enc.Utf8.stringify(decryptResult)
} /*var res = getAesString("abc","1234567890000000","123456");
console.log(res);
console.log(getDAesString(res,"1234567890000000","123456"));*/ var $result = $(".result");
var $edit = $("#edit");
var $askey = $("#askey");
var $asvi = $("#asvi"); $(".en").on("click",function(){
var askey = $askey.val();
if(askey.length % 4 !== 0 ){
alert("密钥长度必须是4的整数倍");
return ;
}
var res = getAesString($edit.val(),askey,$asvi.val());
$result.html(res);
}); $(".den").on("click",function(){
var askey = $askey.val();
if(askey.length % 4 !== 0 ){
alert("密钥长度必须是4的整数倍");
return ;
}
var res = getDAesString($edit.val(),askey,$asvi.val());
$result.html(res);
})
</script>
</html>

  

前端 aes 加密的更多相关文章

  1. 前端AES加密解密

    最开始使用的aes-js的npm包,后来发现npm上面那个包只能加密16个长度的字节,非16个长度的字符串就会报错,后来使用的是crypto-js, AES总共有四种加密方式,我们使用的CBC方式: ...

  2. 前端AES的加密和解密

    在工作的过程中,经常要对一些数据做一些加密,当然有复杂的加密和简单的加密,也有对称加密等等.总之加密的方式有很多.今天在这里,我只是简单的分享一个我最近遇到的加密方式-AES.这个也是后端工程师用的, ...

  3. JavaScript前端和Java后端的AES加密和解密

    在实际开发项目中,有些数据在前后端的传输过程中需要进行加密,那就需要保证前端和后端的加解密需要统一.这里给大家简单演示AES在JavaScript前端和Java后端是如何实现加密和解密的. 直接上代码 ...

  4. JavaScript前端和Java后端的AES加密和解密(转)

    在实际开发项目中,有些数据在前后端的传输过程中需要进行加密,那就需要保证前端和后端的加解密需要统一.这里给大家简单演示AES在JavaScript前端和Java后端是如何实现加密和解密的. java端 ...

  5. 非对称技术栈实现AES加密解密

    非对称技术栈实现AES加密解密 正如前面的一篇文章所述,https协议的SSL层是实现在传输层之上,应用层之下,也就是说在应用层上看到的请求还是明码的,对于某些场景下要求这些http请求参数是非可读的 ...

  6. AES加密解密——AES在JavaWeb项目中前台JS加密,后台Java解密的使用

    一:前言 在软件开发中,经常要对数据进行传输,数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的.因此就要对需要传输的数据进行在客户端进行加密 ...

  7. python3.6 安装第三方库 pyCryptodome 实现AES加密

    起因 前端日子写完的Python入库脚本,通过直接读取配置文件的内容(包含了数据库的ip,数据库的用户名,数据库的密码),因为配置文件中的数据库密码是明文显示的,所以不太安全,由此对其进行加密. 编码 ...

  8. 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密

    你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...

  9. 关于aes加密

    aes加密有几种模式:CBC,AES-128bit, Pkcs7补码方式(后台有可能是PKCS5Padding,是一样的),安卓和ios的key密钥对长度没有要求,但是前端web的密钥和偏移量必须是1 ...

随机推荐

  1. win10系统vs2008环境wince项目无法创建问题

    文章备份,原文来自百度某个作者的博客. 昨晚,当我升级win10之后,发现系统使用还是挺顺畅的,没有当初升级win8的时候那么多错误. 但是今晚回来之后,发现之前win8.1下已经安装好的vs2008 ...

  2. git常见问题之git pull时Please specify which branch you want to merge with.

    $ git pull时遇到如下提示 $ git pull warning: no common commits remote: Counting objects: 5, done. remote: C ...

  3. bad object refs/remotes/origin/HEAD

    How to handle git gc fatal: bad object refs/remotes/origin/HEAD error: failed to run repack I random ...

  4. nginx反向代理部署vue项目(history模式)的方法

    前言: 根据标题我们要区分出两个信息 1. history 模式部署 ( vue的路由模式如果使用history,刷新会报404错误.) 2. Nginx 做反向代理 问题1思考: vue-route ...

  5. 目录:JAVA

    收藏: Java:类与继承

  6. Flutter 中使用Future消除Callback Hell

    /先分别定义各个异步任务 Future<String> login(String userName, String pwd){ ... //用户登录 }; Future<String ...

  7. 自定义string类

    #include <iostream> #include <cstring> using namespace std; class String; class Data{ // ...

  8. PAT 甲级 1053 Path of Equal Weight (30 分)(dfs,vector内元素排序,有一小坑点)

    1053 Path of Equal Weight (30 分)   Given a non-empty tree with root R, and with weight W​i​​ assigne ...

  9. LeetCode_38. Count and Say

    38. Count and Say Easy The count-and-say sequence is the sequence of integers with the first five te ...

  10. 代理IP爬取和验证(快代理&西刺代理)

    前言 仅仅伪装网页agent是不够的,你还需要一点新东西 今天主要讲解两个比较知名的国内免费IP代理网站:西刺代理&快代理,我们主要的目标是爬取其免费的高匿代理,这些IP有两大特点:免费,不稳 ...