`
caniggia1986
  • 浏览: 149657 次
  • 性别: 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

    AES 资料 用Bouncy Castle实现AES-128-CBC加密解密 bcprov-jdk15-145.jar bcprov-jdk16-145.jar

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

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

    BouncyCastle.zip

    只能设置5分,提取BouncyCastle的精华,所有文件只有13个,纯代码实现。去除了BouncyCastle库的调用。请下载的兄弟们希望给个5分。提取精华不易费时费力。

    BouncyCastle:弹跳城堡的简单用法

    充气城堡 简单使用Bouncy Castle并实现以下加密算法: RSA加密/解密 RSA签名 DES加密/解密 AES加密/解密 ECC签名 SHA-256

    基于C#的简单AES加解密

    基于C#简单的AES加解密 private void EncryptRB_CheckedChanged(object sender, EventArgs e) { if (EncryptRB.Checked == true) { C_groupBox.Enabled = false; P_groupBox.Enabled = true; //如果选择加密,...

    Java实现AES CBC PKCS7Padding加解密.docx

    引入依赖 <groupId>org.bouncycastle <artifactId>bcprov-jdk16 <version>1.46 </dependency>

    java加密算法:Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法

    java关于加密的算法demo代码(Base64...1.JDK实现 2.common codes实现 3.bouncy castle实现 三。消息摘要算法: 1.MD5 2.SHA 3.MAC 四。数字签名:JDK实现 1.RSA 2.DSA 3.ECDSA 五。对称加密算法: 1.3DES 2.AES 3.PBE

    【免费下载!】AES,ECC,SHA-256的简单实现(java,调库)

    1)Bouncy Castle (BC): 用于实现椭圆曲线密码学(ECC)算法,确保系统安全传输密钥的过程。 2)Java Cryptography Architecture (JCA): 用于实现对称加密算法(如AES)和SHA-256哈希算法等,提供主流密码学算法的支持...

    RSA,AES,SHA1,RSA-SHA1 Sign加密算法C++/Java封装

    一般网上可以找到的Java加密解密都是使用SunJCE框架,还有一个比较著名的 Java开源加密工具是bouncycastle(http://www.bouncycastle.org/),因为SunJCE是JDK自带的,所以使用比较方便,相对于cryptopp,SunJCE要容易...

    C#实现对AES加密和解密的方法

    明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。...

    dtls:Go的DTLS 1.2 ServerClient实现

    介子DTLSDTLS的Go实现 Go编程语言中的本机实现。 长期目标是进行专业的安全检查,并将其包含在stdlib中。目标/进度这仅针对DTLS 1.2和最现代/通用的密码套件。 我们很乐意为“计划功能”下的内容做出贡献,并修复...

    aesjava源码-Whitebox-crypto-AES-java:Java中的白盒AES实现。周计划

    BouncyCastle (Maven 应该处理这个依赖) 执照 代码在新的 BSD 许可下获得许可。 有关更多详细信息,请参阅许可证文件。 贡献 如果您想通过将其扩展到 AES-256 或实施其他白盒 AES 方案来改进我的代码,请不要犹豫...

    Java_security:Java加密算法(Base64、MD5、AES、DES)

    1.JDK实现 2.common codes实现 3.bouncy castle实现 三。消息摘要算法:com.timliu.security.message_digest 1.MD5 2.SHA 3.MAC 四。数字签名:JDK实现 com.timliu.security.signature 1.RSA 2.DSA 3.ECDSA 五。对称...

    AESCBCPKCS7Padding jar包

    前后端配合使用AES/CBC/PKCS7Padding 实现加解密数据(crypto-js、bouncycastle-java)jar包

    密码学课程设计.rar

    AES密码加密与解密,实现AES分组密码加密和解密。...说明:可以利用Java 加密包Bouncy Castle,C 语言的OpenSSL, Libgcrypt和LibTomCryp,微软.NET 程序的加密与解密等实现密码算法;也可以自己动手实现算法全过程。

    第六章 企业项目开发--cookie1

    引入commons-codec和bouncy-castle,主要是为了实现AES加密与Base64编码。注意:servlet-jar的scope是provide

    JCE taglib for JSP-开源

    该项目提供了作为JSP taglib到Sun的JCE(Java密码扩展)的接口。 它为您的JSP应用程序带来了强大的加密算法,例如AES和Blowfish。 它使用bouncycastle.org cleanroom JCE 1.2.1实现作为

    Java加密与解密的艺术配书源代码

    可以攻玉109 4.1 加固你的系统109 4.2 加密组件Bouncy Castle 111 4.3 辅助工具Commons Codec 120 4.4 小结121 第二部分实践篇 第5章电子邮件传输算法—Base64 134 5.1 Base64算法的由来134 5.2 Base64算法的定义134...

    Java加密与解密的艺术

    可以攻玉1094.1 加固你的系统1094.2 加密组件Bouncy Castle 1114.3 辅助工具Commons Codec 1204.4 小结121第二部分实践篇第5章电子邮件传输算法—Base64 1345.1 Base64算法的由来1345.2 Base64算法的定义1345.3 Base...

Global site tag (gtag.js) - Google Analytics