import java.io.UnsupportedEncodingException;
import java.security.Key;
import java.security.Security;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
public class AES {
private static byte[] iv = { 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x38, 0x37,
0x36, 0x35, 0x34, 0x33, 0x32, 0x31 };
static {
Security.addProvider(new BouncyCastleProvider());
}
/**
* 加密
* @param content 需要加密的内容
* @param password 加密密码
* @return
* @throws UnsupportedEncodingException
*/
public static byte[] encrypt(byte[] content, String password) throws Exception {
Key key = new SecretKeySpec(password.getBytes("utf-8"), "AES");
Cipher in = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
in.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv));
byte[] enc = in.doFinal(content);
return enc;
}
/**
* 解密
* @param content 待解密内容
* @param password 解密密钥
* @return
* @throws UnsupportedEncodingException
*/
public static byte[] decrypt(byte[] content, String password) throws Exception {
Key key = new SecretKeySpec(password.getBytes("utf-8"), "AES");
Cipher out = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
out.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv));
byte[] dec = out.doFinal(content);
return dec;
}
public static void main(String[] args) throws Exception{
String key = "11147169444463676897639210105259";
byte[] result =encrypt("加密字符串".getBytes("utf-8"),key);
System.out.println(new String(result,"utf-8"));
result = decrypt(result,key);
System.out.println(new String(result,"utf-8"));
}
}
分享到:
相关推荐
**使用Bouncy Castle实现AES-128-CBC加密解密** 1. **初始化**: 首先,需要创建一个KeyGenerator对象,指定加密算法(如AES)和密钥大小(128位)。 2. **生成密钥**: 使用KeyGenerator生成密钥对。 3. **初始化向量...
import org.bouncycastle.jce.provider.BouncyCastleProvider; // 添加Bouncy Castle Provider Security.addProvider(new BouncyCastleProvider()); // 生成密钥对 KeyPairGenerator keyGen = ...
1. **bcprov-jdk15on-1.62.jar**:这是BouncyCastle的主要加密提供者包,提供了广泛的加密算法实现,如RSA、AES、DES、SHA等。它支持Java 1.5及更高版本,因此名称中的"jdk15on"表示这个版本适用于Java 1.5及以上。...
Bouncy Castle实现了PKCS#7(用于数据封装和签名)、PKCS#12(用于存储私钥和证书)、PKCS#5(用于密码化)和PKCS#11(用于硬件加密设备接口)等标准。 **OpenSSL兼容** Bouncy Castle还提供了一个名为BCrypt的...
**BouncyCastle.Crypto.dll** 是一个非常重要的组件,尤其对于使用C#进行加密和解密操作的开发者来说。这个库是BouncyCastle项目的一部分,它是一个开源的密码学API,支持多种加密算法和标准,如RSA、AES、DES、SHA...
`org.bouncycastle` 是一个开源的 Java 库,专门用于实现各种加密算法和相关的安全服务。它提供了广泛的加密功能,包括对称和非对称加密、数字签名、哈希函数、证书管理、SSL/TLS 协议支持等。最新1.69版本的发布,...
BouncyCastle支持常见的对称加密算法,如AES(高级加密标准)、DES(数据加密标准)和Blowfish。这些算法用于快速加密大量数据,同一密钥既用于加密也用于解密,适合于保护存储或传输中的数据。 2. **非对称加密**...
BouncyCastle.Crypto.dll是.NET版本的核心组件,包含了大量加密算法的实现,如对称加密(如AES、DES、3DES)、非对称加密(RSA、DSA、ECC)、哈希算法(MD5、SHA-1、SHA-256等)以及消息认证码(MAC)等。...
BouncyCastle库是Java和.NET平台上广泛使用的加密库之一,而"BouncyCastle.Crypto.dll"正是.NET环境中实现该库的核心组件。本文将深入探讨BouncyCastle.Crypto.dll的功能、特点以及其在.NET开发中的应用。 Bouncy...
接下来,我们将详细介绍如何使用BouncyCastle.Crypto库在C#中实现这些算法: **1. 引入库和配置环境** 在C#项目中,你需要通过NuGet包管理器或手动添加引用来引入BouncyCastle库。确保安装的是1.8.10版本。 ```...
BouncyCastle.dll 是一个在C#环境中广泛使用的开源加密库,它为.NET Framework提供了一整套强大的加密功能。这个库是基于Bouncy Castle项目,这是一个跨平台的Java和.NET加密库,提供了各种加密算法、密码协议和PKI...
2. **广泛的密码学算法**:BouncyCastle 支持众多加密算法,如AES、DES、3DES、Blowfish、RSA、DSA、ECDSA等,还包括哈希函数如SHA-1、SHA-256、MD5等,以及消息认证码(MAC)和伪随机数生成器(PRNG)。 3. **PKCS...
总的来说,这份“BouncyCastle1.59帮助文档”是开发者学习和使用BouncyCastle的重要参考资料,结合CHM制作工具,不仅可以方便地查阅和理解库的功能,还能定制自己的帮助文档,提升开发效率。无论你是加密领域的初学...
Bouncy Castle 支持多种加密算法,包括对称加密(如 AES、DES、3DES)、非对称加密(RSA、DSA、ECDSA)、哈希函数(MD5、SHA-1、SHA-256 及以上)、消息认证码(MAC)等。这些算法的实现使得开发人员能够灵活选择...
BouncyCastle.Crypto.dll是这样一个关键组件,它是一个广泛使用的开源加密库,版本1.8.2代表了2018年发布的一个稳定更新。本文将深入探讨BouncyCastle库的功能、应用以及其在1.8.2版本中的改进和特点。 一、Bouncy...
版本号138可能指的是内部版本号,它提供了BouncyCastle的基本加密功能,适合在移动设备或嵌入式系统上使用。 3. **bouncycastle.jar**:这个文件没有明确的版本号和平台标识,可能是通用或者特定版本的别名。通常,...
首先,BouncyCastle.Crypto.dll是Bouncy Castle加密库的.NET版本,它是一个广泛使用的开源加密库,支持各种加密算法,如RSA、AES、DES等。Bouncy Castle不仅提供了基本的加密操作,如加解密、数字签名和哈希,还支持...