最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

Java AES加密解密算法使用示例_AES算法应用场景

Java基础 太平洋学习网 浏览 评论

Java AES算法是属于高级加密标准,它是一种对称加密算法,AES加密被美国用于保护敏感但未分类的资料,所以我们可以说它是足够安全的,AES加密解密算法应用场景也比较广泛,比如我们可以用于加密api接口返回或请求的数据,这样即使我们的app被人抓包了,也不可能知道我们接口请求或返回的Json数据是什么。

什么是对称加密算法呢?

对称加密算法是比较常见的加密算法,使用一个key密钥加密或解密字符串,正是因为它的加密解密都是使用的同一个Key密钥,只要别人不知道你加密的Key密钥,它就很难破解你所加密的JSON数据,就算知道了你明文的key密钥,如果你对key密钥进行了二次封装,对方也不可能破解得了你的json数据,所以AES加密解密算法还是比较安全的。

小编对明文key密钥进行了二次封装,先是将“www.tpyyes.com”明文密钥进行md5加密,然后使用SecretKeySpec对象对md5密钥进行了封装,使用了AES算法,这样就生成了一个非字符串类型的密钥,别人就很难知道你的密钥内容了。

如下是小编在Api接口开发中常常使用到的AES加密解密算法的示例:

package english;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

public class AesDemo {
        //测试
	public static void main(String[] args) {
		//明文密钥
		final String secretKey = "www.tpyyes.com";
		//需要加密的字符串
		String str = "Hello world!";
		//加密
		String encryptedStr = encryptStr(str, secretKey);
		//解密
		String decryptedStr = decryptStr(encryptedStr, secretKey);
		//输出加密后字符串
		System.out.println(encryptedStr);
		//输出解密后字符串
		System.out.println(decryptedStr);
	}
	
	//对明文密钥进行二次封装,生成最终密钥
	public static SecretKeySpec setKey(String keyStr) throws NoSuchAlgorithmException{
		//先MD5加密
		MessageDigest md = MessageDigest.getInstance("MD5");
		byte[] arr = md.digest(keyStr.getBytes());
		SecretKeySpec resultKey = new SecretKeySpec(arr,"AES");
		return resultKey;
	}
	
	//字符串加密
	public static String encryptStr(String strToEncrypt, String secret) 
	{
		try 
		{
			SecretKeySpec md5key = setKey(secret);
			//创建密码器
			Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
			cipher.init(Cipher.ENCRYPT_MODE, md5key);
			return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
		} 
		catch (Exception e) 
		{
			System.out.println("加密错误:" + e.toString());
		}
		return null;
	}

	//字符串解密
	public static String decryptStr(String strToDecrypt, String secret) 
	{
		try 
		{
			SecretKeySpec md5key = setKey(secret);
			//创建密码器
			Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
			cipher.init(Cipher.DECRYPT_MODE, md5key);
			return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));
		} 
		catch (Exception e) 
		{
			System.out.println("解密错误:" + e.toString());
		}
		return null;
	}
	
}

加密解密后:

LT4sV++1vF1oWNnxU4lTAg==
Hello world!

Java AES算法加密解密Json字符串数据,我认为是一个非常好的防止app抓包的方法,如果您有更好的方法,请在下方留言告知。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/java/2018/0622/639.html

    与本文相关的文章

    发表我的评论
    取消评论

    表情

    您的回复是我们的动力!

    • 昵称 (必填)

    网友最新评论