我写了一个AES加密工具类,对明文进行AES加密,相关参数如下:
加密算法:AES
明文:A
算法模式:CBC
密钥长度:256
密钥:1qaz@WSX1qaz@WSX
密钥偏移量:1234567890123456
补码方式:PKCS7Padding
加密结果编码方式:base64
我的加密结果是:WP58v5NfB+3Eo72KBAabGw==
网站上的加密结果是:5CqrZd+/SANPAEF3+Y9XfFKcsC99XywOmJUlRVehFb8=
不知2个结果哪个正确?如果是我的结果不正确,请问问题出在哪?
附AES加密工具类代码:
package com.demo.aes.util; import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.Security; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.DecoderException; import org.bouncycastle.jce.provider.BouncyCastleProvider; public class AESUtils { private static final String PWD = "1qaz@WSX1qaz@WSX"; private static final String IV = "1234567890123456"; public static SecretKeySpec makeKey() throws NoSuchAlgorithmException, UnsupportedEncodingException, DecoderException { Security.addProvider(new BouncyCastleProvider()); KeyGenerator kgen = KeyGenerator.getInstance("AES"); kgen.init(256, new SecureRandom(PWD.getBytes("UTF-8"))); SecretKey key = kgen.generateKey(); SecretKeySpec keySpec = new SecretKeySpec(key.getEncoded(), "AES"); // SecretKeySpec keySpec = new SecretKeySpec(PWD.getBytes("UTF-8"), // "AES"); return keySpec; } public static IvParameterSpec makeIv() throws UnsupportedEncodingException, DecoderException { return new IvParameterSpec(IV.getBytes("UTF-8")); } /** * 加密 * * @param content * 需要加密的内容 * @param password * 加密密码 * @return */ public static byte[] encrypt(String content) { try { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); cipher.init(Cipher.ENCRYPT_MODE, makeKey(), makeIv()); return cipher.doFinal(content.getBytes("utf-8")); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 解密 * * @param content * 待解密内容 * @param password * 解密密钥 * @return */ public static byte[] decrypt(byte[] content, String password) { try { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); cipher.init(Cipher.DECRYPT_MODE, makeKey(), makeIv()); return cipher.doFinal(content); } catch (Exception e) { e.printStackTrace(); } return null; } public static void main(String[] args) throws UnsupportedEncodingException { String content = "A"; System.out.println("TLV加密前:" + content); byte[] encryptResult = encrypt(content); System.out.println("Base64加密后:" + BASE64Utils.encode(encryptResult)); }
相关推荐
AES加密解密工具类,解决windows下和linux加密解密不同问题。
android 可以使用的 AES加密工具类
**AES加密工具** AES(Advanced Encryption Standard)是目前广泛应用的一种块密码标准,它以其高效、安全的特点被广泛用于数据加密。AES加密工具是基于AES算法实现的软件,用于对数据进行加解密操作。本工具是由...
总的来说,这个“RSA+AES加密工具类 Java”为开发者提供了一个便利的工具,帮助他们在Java项目中集成高级的加密功能,确保数据的安全传输和存储。通过合理地使用RSA和AES,可以在不牺牲效率的前提下提高应用的安全性...
用java编写的aes加密工具,内置加密、解密、测试的方法。
AES 加密结果保持一致 在 Node.js 和 Java 中实现 AES 加密结果保持一致是非常重要的。以下是相关知识点的详细解释: AES 加密简介 AES(Advanced Encryption Standard)是一种对称加密算法,主要用于保护数据的...
**AES加密工具(ECB,CBC,CMAC)** AES,全称为Advanced Encryption Standard,是当前广泛应用的一种对称加密算法,由NIST(美国国家标准与技术研究所)在2001年标准化。它取代了DES(Data Encryption Standard)...
封装POST请求和 AES加密解密的代码,可以作为工具类直接引用,封装POST请求和 AES加密解密的代码,可以作为工具类直接引用
在给定的文件中,`AesUtils.java`可能是一个Java实现的AES加密工具类,而`net.txt`可能是.NET平台上AES加密的相关说明或代码片段。分析这两个文件可以帮助我们更好地理解具体的实现差异,并针对性地解决不兼容问题。...
总之,“C# AES加密解密小工具”是一个实用的开发辅助工具,它简化了AES加密和解密的过程,使开发者能够快速地为自己的应用程序添加数据加密功能。在实际应用中,为了提高安全性,可以考虑使用更安全的加密模式,如...
本资源"Delphi.rar_AES_AES加密_delphi AES加密_delphi 加解密_java delphi aes"提供的是在Delphi编程环境中实现AES加密和解密的示例代码,其目标是与Java平台上的加解密过程保持兼容。 首先,让我们深入了解一下...
AES256加密工具类是信息安全领域中一个重要的实用组件,它主要负责对数据进行加密保护,确保数据在传输或存储过程中的安全。AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,提供了强大的安全性...
本项目涉及的是C语言实现的AES加密解密功能,特别关注了CBC(Cipher Block Chaining)模式以及256位的密钥长度。以下是对这些知识点的详细阐述: **AES加密算法:** AES是由NIST(美国国家标准与技术研究所)在2001...
通过这个"C#写的大文件AES加密解密程序",开发者可以学习如何在C#环境中实现高效且安全的文件加密操作,这对于保护敏感数据和满足合规性要求具有重要意义。同时,这也是一个很好的实践案例,展示了如何处理大文件和...
aes 加密工具1.0
AES加密解密工具类是开发人员在处理敏感信息时常用的实用工具,它可以简化加密和解密过程。本篇文章将深入探讨如何在Java中实现AES加密解密,并介绍相关的关键知识点。 首先,我们需要理解AES加密的基本原理。AES是...
### AES加密算法在Delphi中的实现 AES(Advanced Encryption Standard,高级加密标准)是一种对称加密算法,被广泛应用于数据安全领域。它采用固定的数据块大小(128位),支持128、192或256位密钥长度。在Delphi中...
在Qt中,我们可以利用QCryptographicHash、QByteArray和QBuffer等类来实现AES加密和解密。 1. **AES加密算法**: AES有三种不同的密钥长度,即128位(AES_128)、192位(AES_192)和256位(AES_256)。这些长度的选择直接...
在处理加密过程中,可能会遇到“非法参数”异常,这通常是因为输入数据长度不符合AES加密的要求。AES加密算法有固定的数据块大小,对于AES-128,这个大小是16个字节(或128位)。当输入数据长度不是16字节的倍数时,...
AES加密软件,全称为“高级加密标准”(Advanced Encryption Standard),是目前广泛应用的对称加密算法,用于保护敏感数据的安全。AES是由比利时密码学家Joan Daemen和Vincent Rijmen设计的,取代了之前的DES(Data...