AES加密算法,JAVA实现示例
来源:互联网 发布:用u盘重装mac 编辑:程序博客网 时间:2024/06/06 07:28
最近项目上需要用到数据加密存储,查询资料后发现目前AES加密算法安全度非常高,具体原理可自行百度。但经网上搜到的JAVA实现示例运行都有各种问题,耗时一下午,终于调试运行成功,闲话少说,直接上代码。
import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class AesEncodeUtil {//初始向量public static final String VIPARA = "aabbccddeeffgghh"; //AES 为16bytes. DES 为8bytes//编码方式public static final String bm = "UTF-8";//私钥private static final String ASE_KEY="aabbccddeeffgghh"; //AES固定格式为128/192/256 bits.即:16/24/32bytes。DES固定格式为128bits,即8bytes。/** * 加密 * * @param cleartext * @return */public static String encrypt(String cleartext) {//加密方式: AES128(CBC/PKCS5Padding) + Base64, 私钥:aabbccddeeffgghhtry {IvParameterSpec zeroIv = new IvParameterSpec(VIPARA.getBytes());//两个参数,第一个为私钥字节数组, 第二个为加密方式 AES或者DESSecretKeySpec key = new SecretKeySpec(ASE_KEY.getBytes(), "AES");//实例化加密类,参数为加密方式,要写全Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); //PKCS5Padding比PKCS7Padding效率高,PKCS7Padding可支持IOS加解密 //初始化,此方法可以采用三种方式,按加密算法要求来添加。(1)无第三个参数(2)第三个参数为SecureRandom random = new SecureRandom();中random对象,随机数。(AES不可采用这种方法)(3)采用此代码中的IVParameterSpeccipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);//加密操作,返回加密后的字节数组,然后需要编码。主要编解码方式有Base64, HEX, UUE,7bit等等。此处看服务器需要什么编码方式byte[] encryptedData = cipher.doFinal(cleartext.getBytes(bm));return new BASE64Encoder().encode(encryptedData);} catch (Exception e) {e.printStackTrace();return ""; }}/** * 解密 * * @param encrypted * @return */public static String decrypt(String encrypted) {try {byte[] byteMi = new BASE64Decoder().decodeBuffer(encrypted);IvParameterSpec zeroIv = new IvParameterSpec(VIPARA.getBytes());SecretKeySpec key = new SecretKeySpec(ASE_KEY.getBytes(), "AES");Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");//与加密时不同MODE:Cipher.DECRYPT_MODEcipher.init(Cipher.DECRYPT_MODE, key, zeroIv);byte[] decryptedData = cipher.doFinal(byteMi);return new String(decryptedData, bm);} catch (Exception e) {e.printStackTrace();return "";}}/** * 测试 * * @param args * @throws Exception */public static void main(String[] args) throws Exception {String content = "98.5674";// 加密System.out.println("加密前:" + content);String encryptResult = encrypt(content);System.out.println("加密后:" + new String(encryptResult));// 解密String decryptResult = decrypt(encryptResult);System.out.println("解密后:" + new String(decryptResult));}}
1 0
- AES加密算法,JAVA实现示例
- JAVA实现AES加密算法代码
- java实现AES可逆加密算法
- aes加密算法java代码实现
- JAVA AES加密算法实现代码
- AES加密算法的JAVA实现
- 用Java实现AES加密算法
- AES加密算法原理及JAVA示例
- android AES加密算法示例
- AES加密算法设计及JAVA实现
- AES-CBC-PKCS5Padding加密算法Java实现
- AES-CBC-PKCS5Padding加密算法Java实现
- AES加密算法实现流程
- AES加密算法实现流程
- AES加密算法实现
- AES加密算法实现
- AES实现加密算法
- Java加密算法 AES
- java源码分析(2)-String(1)
- 利用测试工具Loadrunner,刷博客访问量与积分实战
- 导航页面ViewPager和欢迎界面的实现
- android listView设置了点击事件 点击无效
- codeforces round 348 div2
- AES加密算法,JAVA实现示例
- Struts2中action 访问servlet API
- android editview 点击弹出输入法时,不把标题栏顶出窗体之外
- UISegmentedControl
- 5种服务器网络编程模型讲解
- Android平台的跨进程通信——AIDL(上)
- 干货文章和优秀的第三方链接
- modsecurity系列五:白名单
- SendKeys.SendWait