crypto.js加密传输
前端页面
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/crypto-js.js"></script> <script> function encryptByDES(message, key) { var keyHex = CryptoJS.enc.Utf8.parse(key); var encrypted = CryptoJS.DES.encrypt(message, keyHex, { mode : CryptoJS.mode.ECB, padding : CryptoJS.pad.Pkcs7 }); return encrypted.toString(); } function decryptByDES(ciphertext, key) { var keyHex = CryptoJS.enc.Utf8.parse(key); var decrypted = CryptoJS.DES.decrypt({ ciphertext : CryptoJS.enc.Base64.parse(ciphertext) }, keyHex, { mode : CryptoJS.mode.ECB, padding : CryptoJS.pad.Pkcs7 }); return decrypted.toString(CryptoJS.enc.Utf8); } $(function() { var pwd = encryptByDES("crd", "12345678"); $("#aaa").val(pwd); $("#pwd").val(decryptByDES(pwd, "12345678")); }); </script> </head> <body> <input id="aaa" value="" /> <input id="pwd" value="" /> </body> </html>
后台:
/** * DES解密 * * @param secretData * 密码字符串 * @param secretKey * 解密密钥 * @return 原始字符串 * @throws Exception */ public String decryption(String secretData, String secretKey) throws Exception { // DES算法要求有一个可信任的随机数源 SecureRandom random = new SecureRandom(); // 创建一个DESKeySpec对象 DESKeySpec desKey = new DESKeySpec(secretKey.getBytes("UTF-8")); // 创建一个密匙工厂 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); // 将DESKeySpec对象转换成SecretKey对象 SecretKey securekey = keyFactory.generateSecret(desKey); // Cipher对象实际完成解密操作 Cipher cipher = Cipher.getInstance("DES"); // 用密匙初始化Cipher对象 cipher.init(Cipher.DECRYPT_MODE, securekey, random); // 真正开始解密操作 return IOUtils.toString(cipher.doFinal(Base64.decodeBase64(secretData.getBytes())),"UTF-8"); }
调用:
System.out.println("=========" + decryption("tzZ2WRdJ32o=", "12345678"));
注意密匙需要八位以上的所以这里用了1到8,密匙可以自定义