BouncyCastle是一个开源的加解密解决方案,主页在http://www.bouncycastle.org/,下面写一个工具类对String加密和解密
/**
* use bouncycastle to AES encrypt
*/
public class AESUtils {
private static final AESUtils instance = new AESUtils();
byte[] iv = { 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x38, 0x37,
0x36, 0x35, 0x34, 0x33, 0x32, 0x31 };
byte[] keybytes = { 0x70, 0x2F, 0x17, 0x7F, 0x6C, 0x3A, 0x22, 0x11, 0x3F,
0x44, 0x5A, 0x66, 0x77, 0x1A, 0x12, 0x1C };
private AESUtils() {
}
public static AESUtils getInstance() {
return instance;
}
private Key key;
private byte[] enc;
public String encrypt(String msg) {
String str;
try {
Security.addProvider(new BouncyCastleProvider());
key = new SecretKeySpec(keybytes, "AES");
Cipher in = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
in.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv));
enc = in.doFinal(msg.getBytes());
str = new String(Hex.encode(enc));
return str;
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
public String decrypt(byte[] msg) {
String str;
try {
Security.addProvider(new BouncyCastleProvider());
key = new SecretKeySpec(keybytes, "AES");
Cipher out = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
out.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv));
byte[] dec = out.doFinal(msg);
str = new String(dec);
return str;
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
}
分享到:
相关推荐
bouncycastle的加密软件包开发 (Bouncy Castle Crypto package) 是加密算法的一个JAVA实现
org.bouncycastle--j2me加密包org.bouncycastle--j2me加密包org.bouncycastle--j2me加密包org.bouncycastle--j2me加密包org.bouncycastle--j2me加密包org.bouncycastle--j2me加密包
org.bouncycastle 加密算法包,csdn上很多这个包的下载都不全,我这完整包里包含了9个jar包 1.69官网最新版本
BouncyCastle 加密算法.net组件 版本10.0
C# BouncyCastle.Crypto.dll用于SM4、SM2加密
java借助bouncycastle库实现ECC双向加密解密算法Utils工具包。
C# 基于BouncyCastle.Crypto 1.8.10 实现国密算法,SM2,SM3,SM4(加签解签,加密解密)
bouncycastle包,为加密提供支持
非常棒的第三方开源组件:Bouncy Castle 加密开源组件 Java Release 1.46。推荐大家使用哈~~~
Bouncy Castle Crypto.dll是一个C#实现的加密包。一款加解密的工具类,可以在C#程序中添加依赖项。
非常棒的第三方开源组件:Bouncy Castle 加密开源组件API Java Release 1.46.推荐大家使用哈~~~~
RSA加密 Java钥转C#用到. 格式转换要用到一个开源加密库Bouncy Castle Crypto APIs
java加密解密研究2、Bouncy Castle和Commons Codec加密组件 java加密解密研究2、Bouncy Castle和Commons Codec加密组件
主要用于加解密,我是在使用解密SM4 时接触到的,在网上代码引用了Org.BouncyCastle.Utilities.Encoders,找不到库 自己在网上找了好久找到了,没有积分的可以去http://www.bouncycastle.org/csharp/ 下载
C#项目,可以直接运行,根据BouncyCastle,sm3、sm4,ECB、CBC加密解密
BouncyCastle.Crypto.dll 版本1.8.1 ,内含使用API,The Legion of the Bouncy Castle
bouncycastle.jar bouncy castle(轻量级密码术包)是一种用于 Java 平台的开放源码的轻量级密码术包;它支持大量的密码术算法,并提供JCE 1.2.1的实现。
只能设置5分,提取BouncyCastle的精华,所有文件只有13个,纯代码实现。去除了BouncyCastle库的调用。请下载的兄弟们希望给个5分。提取精华不易费时费力。
使用其他加密方法只需在Encryptor.Java中替换 cipher = new PaddedBlockCipher( new CBCBlockCipher( new AESLightEngine() ) ); 的AESLightEngine() 为其他engine