<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo SM4.js</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
<style type="text/css">
textarea {
width: 630px;
height: 125px;
vertical-align: top;
}
</style>
</head>
<body>
<div style="text-align: center;">
<h3>密钥区</h3>
<span>密钥[KEY]:<input type="text" id="SM4KEY" placeholder="请先生成密钥" value="65D7B0A918FCC23A"></span>
<span>向量[CBCIV]:<input type="text" id="CBCIV" placeholder="请先生成CBC向量" value="FD7A6E1B470F3B91"></span>
<button onclick="SM4KeyPair.generate();">生成密钥</button>
</div>
<div style="text-align: center;">
<h3>加密区</h3>
<p>SM4Crypter.encrypt(明文, 密钥, 向量)</p>
<div><span style="vertical-align: top;">明文:</span><textarea id="ENCRYPT_CLEAR">`1234567890-=qwertyuiop[]\adfghjkl;'zxcvbnm,./
/~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?.*·1234567890-=qertyuiop[]\adfghjkl;'zvbnm,.//*.~!@#$%^&*()_+QWERTYUIOP{}|ADFGHJKL:"ZCVBNM<>?*/手动阀发文件殴打谁都▆▃☽ㄡā【[>рЬ┟╋</textarea></div>
<button style="margin: 20px" onclick="SM4Demo.encrypt();">点击加密</button>
<input id="AUTO_COPY_ENCRYPT" type="checkbox" checked> 复制加密结果为解密区密文
<div><span style="vertical-align: top;">结果:</span><textarea id="ENCRYPT_CIPHER"></textarea></div>
</div>
<div style="text-align: center;">
<h3>解密区</h3>
<p>SM4Crypter.decrypt(密文, 密钥, 向量)</p>
<div><span style="vertical-align: top;">密文:</span><textarea id="DECRYPT_CIPHER"></textarea></div>
<button style="margin: 20px" onclick="SM4Demo.copyToDecrypt();">复制加密结果为密文</button>
<button style="margin: 20px" onclick="SM4Demo.decrypt();">点击解密</button>
<button style="margin: 20px" onclick="SM4Demo.verify();">点击验证</button>
<div><span style="vertical-align: top;">结果:</span><textarea id="DECRYPT_CLEAR"></textarea></div>
</div>
</body>
<script type="text/javascript" src="SM4.js"></script>
<script type="text/javascript">
const SM4KeyPair = {
KEY_POOL : "0123456789ABCDEF",
generate : function() {
var SM4KEY = "", CBCIV = "";
for (var i = 0; i < 16; i++) {
SM4KEY += this.KEY_POOL[Math.floor(Math.random() * 16)];
CBCIV += this.KEY_POOL[Math.floor(Math.random() * 16)];
}
document.getElementById("SM4KEY").value = SM4KEY;
document.getElementById("CBCIV").value = CBCIV;
}
};
const SM4Demo = {
encrypt : function() {
var SM4KEY = document.getElementById("SM4KEY").value;
var CBCIV = document.getElementById("CBCIV").value;
var clear = document.getElementById("ENCRYPT_CLEAR").value;
//sm4加密方法
var cipher = SM4Crypter.encrypt(clear, SM4KEY, CBCIV);
document.getElementById("ENCRYPT_CIPHER").value = cipher;
if (document.getElementById("AUTO_COPY_ENCRYPT").checked) {
this.copyToDecrypt();
}
},
copyToDecrypt : function() {
document.getElementById("DECRYPT_CIPHER").value = document.getElementById("ENCRYPT_CIPHER").value;
},
decrypt : function() {
var SM4KEY = document.getElementById("SM4KEY").value;
var CBCIV = document.getElementById("CBCIV").value;
var cipher = document.getElementById("DECRYPT_CIPHER").value;
var clear = SM4Crypter.decrypt(cipher, SM4KEY, CBCIV);
document.getElementById("DECRYPT_CLEAR").value = clear;
},
verify : function() {
if (document.getElementById("ENCRYPT_CLEAR").value === document.getElementById("DECRYPT_CLEAR").value) {
alert("验证成功,解密后的明文与加密前的原明文一致");
} else {
alert("验证失败,解密后的明文与加密前的原明文不一致");
}
}
};
</script>
</html>
没有合适的资源?快使用搜索试试~ 我知道了~
sm4.js 加解密demo源代码 - JavaScript
共3个文件
js:2个
html:1个
需积分: 5 0 下载量 55 浏览量
2024-05-22
15:40:35
上传
评论
收藏 12KB RAR 举报
温馨提示
利用sm4.js 加解密demo源代码
资源推荐
资源详情
资源评论
收起资源包目录
sm4.js加解密demo源码.rar (3个子文件)
sm4.js加解密demo源码
SM4.js 29KB
index.html 4KB
SM4.min.js 17KB
共 3 条
- 1
资源评论
小慌啊
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java-leetcode题解之第111题二叉树的最小深度.zip
- java-leetcode题解之第110题平衡二叉树.zip
- java-leetcode题解之第109题有序链表转换二叉搜索树.zip
- java-leetcode题解之第108题将有序数组转换为二叉搜索树.zip
- java-leetcode题解之第107题二叉树的层序遍历II.zip
- java-leetcode题解之第102题二叉树的层序遍历.zip
- java-leetcode题解之第103题二叉树的锯齿形层序遍历.zip
- java-leetcode题解之第104题二叉树的最大深度.zip
- java-leetcode题解之第173题二叉搜索树迭代器.zip
- java-leetcode题解之第100题相同的树.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功