AES加密解密全流程演示__api基础使用
AES(Advanced Encryption Standard)即高级加密标准,是一种广泛使用的对称加密算法,由美国国家标准与技术研究院(NIST)于2001年发布,用于保护电子数据的机密性。AES算法是替代原先DES(数据加密标准)算法的,因为它提供了更高的安全性。AES加密过程是可逆的,意味着使用相同的密钥可以解密加密的数据。
-
密钥长度:AES支持三种长度的密钥:128位、192位和256位。密钥长度越长,加密过程就越复杂,破解难度也相应增加。
-
块大小:AES以固定长度的块(称为状态)作为加密单位,每个块的大小为128位(即16字节)。无论输入数据的大小如何,它都会被处理成这些固定大小的块。
-
工作模式:AES可以通过不同的工作模式来适应不同的应用场景,如ECB(电子密码本模式)、CBC(密码块链接模式)、CFB(密码反馈模式)、OFB(输出反馈模式)和CTR(计数器模式)等。每种模式都有其特定的用途和安全性考虑。
-
高效性:AES算法设计得非常高效,能够在软件和硬件上快速执行,使其成为许多加密应用的首选算法。
public static void main(String[] args) throws Exception {
// 共同约定秘钥和加密算法
String content = "你好,世界";
// AES密钥长度通常为128、192或256位
String key = "1234567812345678"; // 16字节*8
String algorithm = "AES";
System.out.println("\n-----------发送方-----------\n");
Cipher cipher = Cipher.getInstance(algorithm);
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), algorithm);
// 加密模式
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
byte[] encryptBytes = cipher.doFinal(content.getBytes());
String encryptText = new String(Base64.getEncoder().encode(encryptBytes)); // 密文
System.out.println(encryptText);
System.out.println("\n-----------接收方-----------\n");
Cipher recieverCipher = Cipher.getInstance(algorithm);
SecretKeySpec receiverSk = new SecretKeySpec(key.getBytes(), algorithm);
// 解密模式
recieverCipher.init(Cipher.DECRYPT_MODE, receiverSk);
// 先将加密后的字符串解码回字节数据
byte[] decodedBytes = Base64.getDecoder().decode(encryptText);
byte[] plainBytes = recieverCipher.doFinal(decodedBytes);
String plainText = new String(plainBytes); // 原文
System.out.println(plainText);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构