基于springboot实现前端加密, 后端解密

发布时间:2021-05-21
技术:springboot + crypto-js

概述

实现前端加密, 后端解密, 保证前后端密文传输. 另外附带md5摘要加密, aes和des 对称加密等加密的demo.

详细

1.需求(要做什么) 

    实现前端加密, 后端解密,  保证前后端密文传输.  另外附带md5摘要加密, aes和des 对称加密等加密的demo, 用于扩展学习.

2.理论概述

        crypto模块的目的是为了提供通用的加密和哈希算法。Nodejs用C/C++实现这些算法后,通过cypto这个模块暴露为JavaScript接口,这样用起来方便,运行速度也快。

        MD5是一种常用的哈希算法,用于给任意数据一个“签名”。这个签名通常用一个十六进制的字符串表示.

        Hmac算法也是一种哈希算法,它可以利用MD5或SHA1等哈希算法。不同的是,Hmac还需要一个密钥.

        AES是一种常用的对称加密算法,加解密都用同一个密钥。

        DES是一种对称加密算法, 运算速度快,资源消耗较少.

3. 代码分析

	public static void main(String[] args){
		String key = "0102030405060708";
		String iv="0102030405060708";
		
		String content = "test12321郭";
		System.out.println("加密前:" + content);
		
		// 加密
		String encryptResult = encrypt(content, key,iv);
		System.out.println("加密后:" + encryptResult);
		// 解密
		String decryptResult = decrypt(encryptResult, key,iv);
		System.out.println("解密后:" + decryptResult);

		String content2 = "6BC5750B2BCC8A8F99A3FA03E01E9AD4";
		// 解密
		String decryptStr = decrypt(content2,key,iv);
		System.out.println("解密后:" + decryptStr);
		
	}
	
		/**
	 * 加密
	 * 
	 * @param content
	 *            需要加密的内容
	 * @param password
	 *            加密密码
	 * @return
	 */
	public static byte[] encryptByte(String content, String password ,String iv) {
		try {
			//key
			SecretKeySpec key = new SecretKeySpec(password.getBytes(Charset.forName("utf-8")), "AES");
			
			//iv向量
	        byte[] ivByte = iv.getBytes(Charset.forName("utf-8"));
			// 使用CBC模式,需要一个向量iv,可增加加密算法的强度
	        IvParameterSpec ivParamters = new IvParameterSpec(ivByte);
	        
	        //初始化Cipher   "算法/模式/补码方式"
	        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
	        cipher.init(Cipher.ENCRYPT_MODE, key, ivParamters);
	        
			//内容
	        byte[] byteContent = content.getBytes(Charset.forName("utf-8")); 
			byte[] result = cipher.doFinal(byteContent);
			return result;
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (NoSuchPaddingException e) {
			e.printStackTrace();
		} catch (InvalidKeyException e) {
			e.printStackTrace();
		} catch (IllegalBlockSizeException e) {
			e.printStackTrace();
		} catch (BadPaddingException e) {
			e.printStackTrace();
		} catch (InvalidAlgorithmParameterException e) {
			e.printStackTrace();
		}
		return null;
	}


4.项目文件结构截图 

1621488019839050298.png


5.启动项目

eclipse导入maven项目springboot-encode, 待maven依赖jar包加载完成后.


启动项目,右击DemoApplication --> run as -->Java Application, 启动成功后访问: http://localhost:8000


image.png


image.png


本实例支付的费用只是购买源码的费用,如有疑问欢迎在文末留言交流,如需作者在线代码指导、定制等,在作者开启付费服务后,可以点击“购买服务”进行实时联系,请知悉,谢谢
手机上随时阅读、收藏该文章 ?请扫下方二维码