简介
crypto-js是谷歌开发的一个纯JavaScript的加密算法类库,可以非常方便的在前端进行其所支持的加解密操作。目前crypto-js已支持的算法有:MD5、SHA-1、SHA-256、AES、RSA、Rabbit、MARC4、HMAC、HMAC-MD5、HMAC-SHA1、HMAC-SHA256、PBKDF2等。使用时可以引用总文件,也可以单独引用某一文件。
下载
https://github.com/brix/crypto-js/releases
使用
第一步
引入crypto-js.js文件

<script src="crypto-js.js"></script>

第二步
在提交前,对用户名和密码进行加密

function formencode(){var KEY = CryptoJS.enc.Utf8.parse("1234567890123456");var IV = CryptoJS.enc.Utf8.parse('1234567890123456');var key = KEY;var iv = IV;var pwd = $("#password").val();var pwdEncode = CryptoJS.enc.Utf8.parse(pwd);var encryptedPassword = CryptoJS.AES.encrypt(pwdEncode, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.ZeroPadding});var encryptPasswordBase64 =  CryptoJS.enc.Base64.stringify(encryptedPassword.ciphertext);$("#password").val(encryptPasswordBase64);        var username = $("#username").val();var nameuserEncode = CryptoJS.enc.Utf8.parse(username);var encryptedUsername = CryptoJS.AES.encrypt(nameuserEncode, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.ZeroPadding});var encryptedUsernameBase64 = CryptoJS.enc.Base64.stringify(encryptedUsername.ciphertext);$("#username").val(encryptedUsernameBase64 );
}

第三步
后台接收处理解密

String username = h.get("username","");
String password = h.get("password","");
if(!username.equals("")) {username = AesEncode.desEncrypt(username);password = AesEncode.desEncrypt(password);out.print("解密后的用户名/密码:" + username + "/" + password);
}

AesEncode类


```java
package util;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
/*** @author 作者 :Mall*/
public class AesEncode {// 使用AES-128-CBC加密模式,key需要为16位,key和iv可以相同!private static String KEY = "1234567890123456";private static String IV = "1234567890123456";/*** 加密方法* * @param data*            要加密的数据* @param key*            加密key* @param iv*            加密iv* @return 加密的结果* @throws Exception*/public static String encrypt(String data, String key, String iv) throws Exception {try {Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");// "算法/模式/补码方式"NoPadding// PkcsPaddingint blockSize = cipher.getBlockSize();byte[] dataBytes = data.getBytes();int plaintextLength = dataBytes.length;if (plaintextLength % blockSize != 0) {plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));}byte[] plaintext = new byte[plaintextLength];System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);byte[] encrypted = cipher.doFinal(plaintext);return new Base64().encodeToString(encrypted);} catch (Exception e) {e.printStackTrace();return null;}}/*** 解密方法* * @param data*            要解密的数据* @param key*            解密key* @param iv*            解密iv* @return 解密的结果* @throws Exception*/public static String desEncrypt(String data, String key, String iv) throws Exception {try {byte[] encrypted1 = new Base64().decode(data);Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);byte[] original = cipher.doFinal(encrypted1);String originalString = new String(original);return originalString;} catch (Exception e) {e.printStackTrace();return null;}}/*** 使用默认的key和iv加密* * @param data* @return* @throws Exception*/public static String encrypt(String data) throws Exception {return encrypt(data, KEY, IV);}/*** 使用默认的key和iv解密* * @param data* @return* @throws Exception*/public static String desEncrypt(String data) throws Exception {return desEncrypt(data, KEY, IV);}}
实现的jsp页

```java```css
<%@page import="util.AesEncode"%>
<%@page import="tea.entity.Http"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%
Http h = new Http(request);
String username = h.get("username","");
String password = h.get("password","");
if(!username.equals("")) {username = AesEncode.desEncrypt(username);password = AesEncode.desEncrypt(password);out.print("解密后的用户名/密码:" + username + "/" + password);
}
%>
<!doctype html>
<html>
<head><script src="/tea/jquery-1.3.1.min.js"></script><script src="crypto-js.js"></script>
</head>
<body><form action="?">用户名:<input type="text" name="username" id="username"/>密     码:<input type="password" name="password" id="password"/><input type="submit" value="提交"/><input type="button" onclick="formencode()" value="加密"/></form></body>
</html>
<script>
function formencode(){var KEY = CryptoJS.enc.Utf8.parse("1234567890123456");var IV = CryptoJS.enc.Utf8.parse('1234567890123456');var key = KEY;var iv = IV;var pwd = $("#password").val();var pwdEncode = CryptoJS.enc.Utf8.parse(pwd);var encryptedPassword = CryptoJS.AES.encrypt(pwdEncode, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.ZeroPadding});var encryptPasswordBase64 =  CryptoJS.enc.Base64.stringify(encryptedPassword.ciphertext);$("#password").val(encryptPasswordBase64);        var username = $("#username").val();var nameuserEncode = CryptoJS.enc.Utf8.parse(username);var encryptedUsername = CryptoJS.AES.encrypt(nameuserEncode, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.ZeroPadding});var encryptedUsernameBase64 = CryptoJS.enc.Base64.stringify(encryptedUsername.ciphertext);$("#username").val(encryptedUsernameBase64 );
}
</script>

crypto.js 前端加解密相关推荐

  1. base64前端加解密方法

    18.base64前端加解密方法 1.添加方法js方法 const Base64 = {//加密encode(str) {if (str===undefined || str === "&q ...

  2. [crypto]-02-非对称加解密RSA原理概念详解

    说明:本文使用的数据来自网络,重复的太多了,也不知道哪篇是原创. 算法原理介绍 step 说明 描述 备注 1 找出质数 P .Q - 2 计算公共模数 N = P * Q - 3 欧拉函数 φ(N) ...

  3. [crypto]-01-对称加解密AES原理概念详解

    1.对称加解密 术语:P是明文,C是密文,K是密钥,E是加密算法,D是解密算 (1).常用的对称加解密有哪些? (2).加解密的模式 [ecb]这种模式是将整个明文分成若干段相同的小段,然后对每一小段 ...

  4. JS RC4加解密报文

    JS RC4加解密 RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变.它加解密使用相同的密钥,因此也属于对称加密算法.RC4加密算法原理 , 对明文使用同一个密钥异或两 ...

  5. 【crypto】基于crypto.js的web前端加解密系统实现

    文章目录 一.概念介绍 1.1 crypto.js介绍 1.2 加密 / 哈希 / 编码 1.2.1 加密/解密 1.2.2 散列/哈希 1.2.3 BASE64编解码 二.加解密思想(以md5为例) ...

  6. angular和JAVA实现aes、rsa加密解密,前后端交互,前端加解密和后端JAVA加解密实现

    今天实现了下AES和RSA加密解密,主要的功能是对前后端交互数据进行加密解密,为什么要用到两个算法呢,首先RSA默认的话加密长度是有限的100多个byte吧大约,并且需要公钥私钥,而AES加密没有限制 ...

  7. JS逆向加解密——python 实现AES加解密

    前言 写爬虫项目,做JS逆向或者APP逆向时,经常遇到网站的很多参数都经过AES加密解密,用python实现AES加解密是非常简单的,免去了扣JS代码,并且实现格式固定,所以本文提供实现好的AES加解 ...

  8. aes解密算法 java_AES算法实现Java和JS互通加解密

    实际开发中客户端与服务端的通信内容往往需要通过密文传输,本文将介绍可以实现Java与js的互相加解密的AES加密方式 Java语言实现 public class AESTest { //static ...

  9. android cocoscreator jsc js 间加解密(六)

    前言 前面 学了 aandroid cocoscreator 热更新 超详细篇(五) 这章 主要学习 cocoscreator 构建后 jsc 与js 文件 之间相互转化(加解密)并实际测试. 可以配 ...

  10. XXTea加密 c++ 与 js 互相加解密

    关于加密功能,客户端使用的是creator  用js开发的,服务器端用lua做的 要做加密功能: 1.利用c++绑定调用c++实现加密,                             好处: ...

最新文章

  1. 数据统计之月增用户统计
  2. 【 C 】assert.h 简明介绍
  3. linux 读写时间变长,linux时钟变慢的原因分析【转】
  4. ORACLE 11G DATA GUARD主从切换
  5. LeetCode MySQL 601. 体育馆的人流量(row_number+over+cast)
  6. android 远程桌面连接闪退,远程桌面一点连接就闪退,不能弹出输入账号密码窗口...
  7. 《BI那点儿事》三国数据分析系列——蜀汉五虎上将与魏五子良将武力分析,绝对的经典分析...
  8. Elasticsearch安装及自动同步mysql数据库数据
  9. leetcode python 1
  10. 财务自由的味道!台积电股价连创新高,经营团队15人持股价值过亿
  11. python零基础学难吗_零基础学习Python难吗?要怎么学Python才是最有效的?
  12. python导入xlsx转为csv_Python 拆分工作表为单个工作簿
  13. 【转】NB的specify
  14. “能耗大户”数据中心供配电系统
  15. 创维电视显示服务器异常,创维网络电视,看在线电影及网络异常的处理!
  16. 计算机系统组成习题检测及答案
  17. 阿里那些吊炸天的开源工具,你知道几个?
  18. 如何快速调整Excel中图表标签位置
  19. android 矢量图片使用方法,Android中的矢量图
  20. Linux就这个范儿 第13章 打通任督二脉

热门文章

  1. 科研论文中,图片组合方法和导出高分辨率的方法
  2. PSAM卡、SAM卡、SIM卡
  3. win7做ftp服务器是否稳定,win7可以做ftp服务器吗
  4. 串口服务器芯片方案,串口转以太网单芯片
  5. android cocos 二次启动 崩溃,基于cocos2dx 1.0.1 0.12.0的第二次运行时android...
  6. LOFTER轻博模板设计
  7. 【樽海鞘算法】基于衰减因子和动态学习的改进樽海鞘群算法(RDSSA)求解单目标优化问题matlab代码
  8. wechat微信模板消息推送demo
  9. 汽车电子ISO7637-2 5A/5B抛负载测试详解
  10. python爬取instom图片_用python爬虫保存instagram图片