`
caniggia1986
  • 浏览: 151478 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用 bouncycastle实现 AES

阅读更多

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"));
	}

}
分享到:
评论

相关推荐

    AES 资料 Bouncy Castle Crypto

    **使用Bouncy Castle实现AES-128-CBC加密解密** 1. **初始化**: 首先,需要创建一个KeyGenerator对象,指定加密算法(如AES)和密钥大小(128位)。 2. **生成密钥**: 使用KeyGenerator生成密钥对。 3. **初始化向量...

    java使用bouncycastle实现椭圆曲线(ECC)双向加密解密

    import org.bouncycastle.jce.provider.BouncyCastleProvider; // 添加Bouncy Castle Provider Security.addProvider(new BouncyCastleProvider()); // 生成密钥对 KeyPairGenerator keyGen = ...

    BouncyCastle依赖.zip

    1. **bcprov-jdk15on-1.62.jar**:这是BouncyCastle的主要加密提供者包,提供了广泛的加密算法实现,如RSA、AES、DES、SHA等。它支持Java 1.5及更高版本,因此名称中的"jdk15on"表示这个版本适用于Java 1.5及以上。...

    bouncycastle jar包

    Bouncy Castle实现了PKCS#7(用于数据封装和签名)、PKCS#12(用于存储私钥和证书)、PKCS#5(用于密码化)和PKCS#11(用于硬件加密设备接口)等标准。 **OpenSSL兼容** Bouncy Castle还提供了一个名为BCrypt的...

    C# 基于BouncyCastle.Crypto 1.8.10 实现国密算法,SM2,SM3,SM4(加签解签,加密解密)

    接下来,我们将详细介绍如何使用BouncyCastle.Crypto库在C#中实现这些算法: **1. 引入库和配置环境** 在C#项目中,你需要通过NuGet包管理器或手动添加引用来引入BouncyCastle库。确保安装的是1.8.10版本。 ```...

    org.bouncycastle 加密算法包 最新1.69版

    `org.bouncycastle` 是一个开源的 Java 库,专门用于实现各种加密算法和相关的安全服务。它提供了广泛的加密功能,包括对称和非对称加密、数字签名、哈希函数、证书管理、SSL/TLS 协议支持等。最新1.69版本的发布,...

    BouncyCastle.Crypto.rar

    BouncyCastle.Crypto.dll是.NET版本的核心组件,包含了大量加密算法的实现,如对称加密(如AES、DES、3DES)、非对称加密(RSA、DSA、ECC)、哈希算法(MD5、SHA-1、SHA-256等)以及消息认证码(MAC)等。...

    BouncyCastle.Crypto.dll

    BouncyCastle库是Java和.NET平台上广泛使用的加密库之一,而"BouncyCastle.Crypto.dll"正是.NET环境中实现该库的核心组件。本文将深入探讨BouncyCastle.Crypto.dll的功能、特点以及其在.NET开发中的应用。 Bouncy...

    BouncyCastle.Crypto.dll 版本1.8.6 C#语言

    1. **加密算法支持**:BouncyCastle.Crypto.dll 提供了多种加密算法的实现,包括对称加密(如AES、Blowfish、DES)、非对称加密(如RSA、DSA、ECDSA)、哈希函数(如SHA-1、SHA-256、MD5)和消息认证码(MAC)。...

    BouncyCastle.dll C#依赖工具,用作数据的加解密辅助类

    BouncyCastle.dll 是一个在C#环境中广泛使用的开源加密库,它为.NET Framework提供了一整套强大的加密功能。这个库是基于Bouncy Castle项目,这是一个跨平台的Java和.NET加密库,提供了各种加密算法、密码协议和PKI...

    bouncycastle1.59 帮助文档(包含html源文件制作工具)

    总的来说,这份“BouncyCastle1.59帮助文档”是开发者学习和使用BouncyCastle的重要参考资料,结合CHM制作工具,不仅可以方便地查阅和理解库的功能,还能定制自己的帮助文档,提升开发效率。无论你是加密领域的初学...

    BouncyCastle.Crypto.dll 版本1.8.1

    2. **广泛的密码学算法**:BouncyCastle 支持众多加密算法,如AES、DES、3DES、Blowfish、RSA、DSA、ECDSA等,还包括哈希函数如SHA-1、SHA-256、MD5等,以及消息认证码(MAC)和伪随机数生成器(PRNG)。 3. **PKCS...

    Bouncy Castle 1.64 API及制作工具

    Bouncy Castle 支持多种加密算法,包括对称加密(如 AES、DES、3DES)、非对称加密(RSA、DSA、ECDSA)、哈希函数(MD5、SHA-1、SHA-256 及以上)、消息认证码(MAC)等。这些算法的实现使得开发人员能够灵活选择...

    org.bouncycastle完整资源包

    `org.bouncycastle`库是一个强大的开源加密库,为Java开发者提供了丰富的安全功能,包括加密算法、密码学标准实现以及X.509证书处理等。这个完整的资源包涵盖了所有必要的组件,是开发人员在进行安全编程时的重要...

    BouncyCastle.Crypto.dll 1.8.2

    BouncyCastle.Crypto.dll是这样一个关键组件,它是一个广泛使用的开源加密库,版本1.8.2代表了2018年发布的一个稳定更新。本文将深入探讨BouncyCastle库的功能、应用以及其在1.8.2版本中的改进和特点。 一、Bouncy...

    bouncycastle集合包

    版本号138可能指的是内部版本号,它提供了BouncyCastle的基本加密功能,适合在移动设备或嵌入式系统上使用。 3. **bouncycastle.jar**:这个文件没有明确的版本号和平台标识,可能是通用或者特定版本的别名。通常,...

    BouncyCastle.Crypto.dll,itextsharp.dll

    首先,BouncyCastle.Crypto.dll是Bouncy Castle加密库的.NET版本,它是一个广泛使用的开源加密库,支持各种加密算法,如RSA、AES、DES等。Bouncy Castle不仅提供了基本的加密操作,如加解密、数字签名和哈希,还支持...

Global site tag (gtag.js) - Google Analytics