资源简介
高性能AES256对称加解密,兼容Java、IOS、Android,带注释和使用方法。不再需要下载额外的文件了,小白式使用
代码片段和文件信息
import java.io.UnsupportedEncodingException;
import java.security.Key;
import java.security.Security;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import com.sun.org.apache.xerces.internal.impl.dv.util.base64;
public class AES256Encryption{
/*
*密钥算法
* java6支持56位密钥,bouncycastle支持64位
*/
public static final String KEY_ALGORITHM=“AES“;
/**
* 加密/解密算法/工作模式/填充方式
* JAVA6 支持PKCS5PADDING填充方式
* Bouncy castle支持PKCS7Padding填充方式
*/
public static final String CIPHER_ALGORITHM=“AES/ECB/PKCS7Padding“;
/*
* 生成密钥,java6只支持56位密钥,bouncycastle支持64位密钥
* @return byte[] 二进制密钥
*/
public static String initkey() throws Exception{
//实例化密钥生成器
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
KeyGenerator kg=KeyGenerator.getInstance(KEY_ALGORITHM “BC“);
//初始化密钥生成器,AES要求密钥长度为128位、192位、256位
kg.init(256);
// kg.init(128);
//生成密钥
SecretKey secretKey=kg.generateKey();
//获取二进制密钥编码形式
return base64.encode(secretKey.getEncoded());
//为了便于测试,这里我把key写死了,如果大家需要自动生成,可用上面注释掉的代码
// return new byte[] { 0x08 0x08 0x04 0x0b 0x02 0x0f 0x0b 0x0c
// 0x01 0x03 0x09 0x07 0x0c 0x03 0x07 0x0a 0x04 0x0f
// 0x06 0x0f 0x0e 0x09 0x05 0x01 0x0a 0x0a 0x01 0x09
// 0x06 0x07 0x09 0x0d };
}
/**
* 转换密钥
* @param key 二进制密钥
* @return Key 密钥
* */
public static Key toKey(byte[] key) throws Exception{
//实例化DES密钥
//生成密钥
SecretKey secretKey=new SecretKeySpec(keyKEY_ALGORITHM);
return secretKey;
}
/**
* 加密数据
* @param data 待加密数据
* @param key 密钥
* @return String 加密后的数据
* */
public static String encrypt(String dataString key) throws Exception{
byte[] keys = base64.decode(key);
//还原密钥
Key k=toKey(keys);
/**
* 实例化
* 使用 PKCS7PADDING 填充方式,按如下方式实现就是调用bouncycastle组件实现
* Cipher.getInstance(CIPHER_ALGORITHM“BC“)
*/
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
Cipher cipher=Cipher.getInstance(CIPHER_ALGORITHM “BC“);
//初始化,设置为加密模式
cipher.init(Cipher.ENCRYPT_MODE k);
//执行操作
return base64.encode(cipher.doFinal(data.getBytes()));
}
/**
* 解密数据
* @param data 待解密数据
* @param key 密钥
* @return byte[] 解密后的数据
* */
public static String decrypt(String dataString key) throws Exception{
byte[] datas = base64.decode(data);
byte[] keys = base64.decode(key);
//欢迎密钥
Key k =toKey(keys);
/**
* 实例化
* 使用 PKCS7PADDING 填充方式,按如下方式实现就是调用bouncycastle组件实现
* Cipher.getInstance(CIPHER_ALGORITHM“BC“)
*/
Cipher cipher=Cipher.getInstance(CIPHER_ALGORITHM);
//初始化,设置为解密模式
cipher.init(Cipher.DECRYPT_MODE k);
//执行操作
return new String(cipher.doFinal(datas));
}
/**
* @param args
* @throws UnsupportedEncodingException
* @throws Exception
*/
public static void main(String[] args) thr
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4060 2015-03-31 20:18 高性能AES256对称加解密,兼容Java、IOS、Android\AES256Encryption.java
文件 115 2015-03-31 20:20 高性能AES256对称加解密,兼容Java、IOS、Android\使用方法.txt
文件 2481 2006-11-17 10:10 高性能AES256对称加解密,兼容Java、IOS、Android\替换jdk下jre下lib下security的文件\local_policy.jar
文件 2465 2006-11-17 10:10 高性能AES256对称加解密,兼容Java、IOS、Android\替换jdk下jre下lib下security的文件\US_export_policy.jar
文件 1876535 2015-03-26 19:44 高性能AES256对称加解密,兼容Java、IOS、Android\需要导入的包\bcprov-jdk16-146.jar
目录 0 2015-03-31 20:18 高性能AES256对称加解密,兼容Java、IOS、Android\替换jdk下jre下lib下security的文件
目录 0 2015-03-31 20:15 高性能AES256对称加解密,兼容Java、IOS、Android\需要导入的包
目录 0 2015-03-31 20:19 高性能AES256对称加解密,兼容Java、IOS、Android
----------- --------- ---------- ----- ----
1885656 8
评论
共有 条评论