JavaScript笔记-前端AES加密
这里用最传统的方式进行AES加密。
提供两种方式:
-
console.log("方式一");
-
var userName = document.getElementById("userName").value;
-
var password = document.getElementById("password").value;
-
var offset = document.getElementById("offset").value;
-
var salt = document.getElementById("salt").value;
-
-
-
var encrypted = CryptoJS.AES.encrypt(password, salt, {
-
mode: CryptoJS.mode.ECB,
-
padding: CryptoJS.pad.Pkcs7
-
});
-
-
console.log("原始数据 : ", password);
-
console.log("vi : ", offset);
-
console.log("salt : ", salt);
-
-
document.getElementById("password").value = encrypted;
-
console.log("ase加密 : ", encrypted);
-
console.log("解密");
-
-
let decrypted = CryptoJS.AES.decrypt(encrypted, salt, {
-
mode: CryptoJS.mode.ECB,
-
padding: CryptoJS.pad.Pkcs7
-
});
-
-
console.log("ase 解码 : " , decrypted.toString(CryptoJS.enc.Utf8));
-
-
-
console.log("方式二");
-
salt = CryptoJS.enc.Utf8.parse(salt);
-
password = CryptoJS.enc.Utf8.parse(password);
-
encrypted = CryptoJS.AES.encrypt(password, salt, {
-
mode: CryptoJS.mode.ECB,
-
padding: CryptoJS.pad.Pkcs7
-
});
-
console.log("密文 : ", encrypted.toString());
-
console.log("解密");
-
-
decrypted = CryptoJS.AES.decrypt(encrypted.toString(), salt, {
-
mode: CryptoJS.mode.ECB,
-
padding: CryptoJS.pad.Pkcs7
-
});
-
-
-
console.log("明文 : ", CryptoJS.enc.Utf8.stringify(decrypted).toString());
运行截图如下:
完整代码如下:
-
-
<html xmlns="http://www.w3.org/1999/xhtml"
-
xmlns:th="https://www.thymeleaf.org"
-
xmlns:sec="https://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
-
<head>
-
<!-- Standard Meta -->
-
<meta charset="utf-8" />
-
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
-
-
<!-- Site Properties -->
-
<title>Login Example - Semantic</title>
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/reset.css">
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/site.css">
-
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/container.css">
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/grid.css">
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/header.css">
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/image.css">
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/menu.css">
-
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/divider.css">
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/segment.css">
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/form.css">
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/input.css">
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/button.css">
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/list.css">
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/message.css">
-
<link rel="stylesheet" type="text/css" href="https://semantic-ui.com/dist/components/icon.css">
-
-
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
-
-
<!-- 引入 CDN Crypto.js 开始 AES加密 注意引入顺序 -->
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/core.min.js"></script>
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/enc-base64.min.js"></script>
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/md5.min.js"></script>
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/evpkdf.min.js"></script>
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/cipher-core.min.js"></script>
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/aes.min.js"></script>
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/pad-pkcs7.min.js"></script>
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/mode-ecb.min.js"></script>
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/enc-utf8.min.js"></script>
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/enc-hex.min.js"></script>
-
<!-- 引入 CDN Crypto.js 结束 -->
-
-
<style type="text/css">
-
body {
-
background-color: #DADADA;
-
}
-
body > .grid {
-
height: 100%;
-
}
-
.image {
-
margin-top: -100px;
-
}
-
.column {
-
max-width: 450px;
-
}
-
</style>
-
<script language="JavaScript">
-
-
function login(){
-
-
console.log("方式一");
-
var userName = document.getElementById("userName").value;
-
var password = document.getElementById("password").value;
-
var offset = document.getElementById("offset").value;
-
var salt = document.getElementById("salt").value;
-
-
-
var encrypted = CryptoJS.AES.encrypt(password, salt, {
-
mode: CryptoJS.mode.ECB,
-
padding: CryptoJS.pad.Pkcs7
-
});
-
-
console.log("原始数据 : ", password);
-
console.log("vi : ", offset);
-
console.log("salt : ", salt);
-
-
document.getElementById("password").value = encrypted;
-
console.log("ase加密 : ", encrypted);
-
console.log("解密");
-
-
let decrypted = CryptoJS.AES.decrypt(encrypted, salt, {
-
mode: CryptoJS.mode.ECB,
-
padding: CryptoJS.pad.Pkcs7
-
});
-
-
console.log("ase 解码 : " , decrypted.toString(CryptoJS.enc.Utf8));
-
-
-
console.log("方式二");
-
salt = CryptoJS.enc.Utf8.parse(salt);
-
password = CryptoJS.enc.Utf8.parse(password);
-
encrypted = CryptoJS.AES.encrypt(password, salt, {
-
mode: CryptoJS.mode.ECB,
-
padding: CryptoJS.pad.Pkcs7
-
});
-
console.log("密文 : ", encrypted.toString());
-
console.log("解密");
-
-
decrypted = CryptoJS.AES.decrypt(encrypted.toString(), salt, {
-
mode: CryptoJS.mode.ECB,
-
padding: CryptoJS.pad.Pkcs7
-
});
-
-
-
console.log("明文 : ", CryptoJS.enc.Utf8.stringify(decrypted).toString());
-
-
}
-
</script>
-
</head>
-
<body>
-
-
<div class="ui middle aligned center aligned grid">
-
<div class="column">
-
<h2 class="ui teal image header">
-
<div class="content">
-
Log-in to your account
-
</div>
-
</h2>
-
<form action="" method="post" class="ui large form" onsubmit="login()">
-
<div class="ui stacked segment">
-
<div class="field">
-
<div class="ui left icon input">
-
<i class="user icon"></i>
-
<input type="text" id="userName" name="userName" placeholder="userName">
-
</div>
-
</div>
-
<div class="field">
-
<div class="ui left icon input">
-
<i class="lock icon"></i>
-
<input type="password" id="password" name="password" placeholder="password">
-
</div>
-
</div>
-
<button class="ui fluid large teal button submit">Login</button>
-
</div>
-
-
<input name="salt" id="salt" type="hidden" value="abc123abc123abc1">
-
<input name="offset" id="offset" type="hidden" value="abcabcabcabcabca">
-
-
<div class="ui error message"></div>
-
-
</form>
-
-
</div>
-
</div>
-
-
</body>
-
-
</html>
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfbcch
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01