AES是目前使用最多的对称加密算法。AES是至今尚未被破解的一个算法;AES通常用于移动通信系统加密以及基于SSH协议的软件,比如SSH Client、SecureCRT 等等。它是DES的替代者。
密钥长度
默认
工作模式
填充方式
实现
128192256
128
ECBCBCPCBCCTRCTS
CFBCFB8128OFB8128
NoPadding
PKCS5Padding

IOS10126Padding
JDK(256位密钥需要获得无政策限制权限文件)
同上
同上
同上
PKCS7Padding
ZeroBytePadding
BC
以下就JDK提供 的AES 方式实现的Demo:
package com.baikeyang.EncrptionProject;

import java.security.Key;

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

import org.apache.commons.codec.binary.Base64;

public class AESEncrption {

	public static void main(String[] args) {
		jdkAES();
	}
	
	static String str = "采用JDK实现对称加密AES算法";
	
	public static void jdkAES(){
		try {
			// 生成Key
			KeyGenerator generator = KeyGenerator.getInstance("AES");
			generator.init(128);
			SecretKey secretKey = generator.generateKey();
			byte[] byteskey = secretKey.getEncoded();
			
			// key的转换
			Key key = new SecretKeySpec(byteskey, "AES");
			
			// 加密
			Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
			cipher.init(Cipher.ENCRYPT_MODE, key);
			byte[] result = cipher.doFinal(str.getBytes());
			System.out.println(Base64.encodeBase64String(result));
			
			// 解密
			cipher.init(Cipher.DECRYPT_MODE, key);
			result = cipher.doFinal(result);
			System.out.println(new String(result));
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}

标签: 对称加密算法, AES加密, AES算法加密, 对称加密AES算法

添加新评论