資源簡介
高性能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
評論
共有 條評論