对称加密算法 之 AES 篇
侧边栏壁纸
  • 累计撰写 269 篇文章
  • 累计收到 275 条评论

对称加密算法 之 AES 篇

Karry Bai
2017-01-02 / 0 评论 / 187 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2020年12月25日,已超过551天没有更新,若内容或图片失效,请留言反馈。
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();
		}
	}
	
}
0

评论 (0)

取消