本文转自:http://blog.sina.com.cn/s/blog_7c8eb1590100svr0.html

package com.siro.tools;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class AESPlus {

public static String encrypt(String strKey, String strIn) throws Exception {
        SecretKeySpec skeySpec = getKey(strKey);
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        IvParameterSpec iv = new IvParameterSpec("0102030405060708".getBytes());
        cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
        byte[] encrypted = cipher.doFinal(strIn.getBytes());

return new BASE64Encoder().encode(encrypted);
    }

public static String decrypt(String strKey, String strIn) throws Exception {
        SecretKeySpec skeySpec = getKey(strKey);
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        IvParameterSpec iv = new IvParameterSpec("0102030405060708".getBytes());
        cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
        byte[] encrypted1 = new BASE64Decoder().decodeBuffer(strIn);

byte[] original = cipher.doFinal(encrypted1);
        String originalString = new String(original);
        return originalString;
    }

private static SecretKeySpec getKey(String strKey) throws Exception {
        byte[] arrBTmp = strKey.getBytes();
        byte[] arrB = new byte[16]; // 创建一个空的16位字节数组(默认值为0)

for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) {
            arrB[i] = arrBTmp[i];
        }

SecretKeySpec skeySpec = new SecretKeySpec(arrB, "AES");

return skeySpec;
    }

public static void main(String[] args) throws Exception {
        String Code = "中文ABc123";
        String key = "1q2w3e4r";
        String codE;

codE = AESPlus.encrypt(key, Code);

System.out.println("原文:" + Code);
        System.out.println("密钥:" + key);
        System.out.println("密文:" + codE);
        System.out.println("解密:" + AESPlus.decrypt(key, codE));
    }
}

转载于:https://www.cnblogs.com/freeliver54/archive/2011/10/09/2203342.html

[转]JAVA AES 加密算法相关推荐

  1. java aes php_php和java的aes默认加密算法有点区别及解决方法。

    1.php和java的aes默认加密算法有点区别,php能解密java加密的密文,但java不能解密php加密的密文.原因在于: 1.Java中AES加密与解密默认使用AES/ECB/PKCS5Pad ...

  2. JS 与 JAVA 跨语言实现 RSA 和 AES加密算法

    简介: 开发中为了数据的安全性使用加密算法对数据进行加密是一种很常见的情况,但就一种语言来说,直接使用提供的相应的库进行少许封装是一件很容易的事.但是在一些情况下我们可能需要跨语言来实现,比如前后端分 ...

  3. java aes pbe_JAVA对称加密算法PBE定义与用法实例分析

    本文实例讲述了JAVA对称加密算法PBE定义与用法.分享给大家供大家参考,具体如下: 一 AES.DES和3DES在使用上比较一致 二 PBE算法优点 三 PBE介绍 1.PBE:Password B ...

  4. AES加密算法java实现

    转载自: https://blog.csdn.net/zyhlwzy/article/details/77948165 AES加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度 ...

  5. AES加密算法在Java中的应用

    1.加密算法 一两个月没写过博客了,上次把尚筹网的博客补了一波,然后就在找工作,这不,这个月刚入职,领导给了个代码优化的任务,使用SornarQube对项目代码进行分析,然后根据分析出来的点逐点优化. ...

  6. AES加密算法 Java与Python跨平台实现

    AES加密算法 Java与Python跨平台实现 什么是AES Java的实现 Python的实现 结果 什么是AES Note: 网上有很多实现代码但是鱼龙混杂,笔者摸索了半天,实现了AES加密文本 ...

  7. aes加密算法 java实现,AES加密算法的java实现

    AES加密算法的java实现 package com.encryp; import java.security.InvalidKeyException; import java.security.No ...

  8. JAVA:实现AES 加密算法(附完整源码)

    JAVA:实现AES 加密算法 package com.thealgorithms.ciphers;import javax.crypto.*; import java.security.Invali ...

  9. AES加密算法原理及java android实现

    AES当今最流行的对称加密算法之一,是DES的替代者. 密钥是AES算法实现加密和解密的根本.对称加密算法之所以对称,是因为这类算法对明文的加密和解密需要使用同一个密钥. AES支持三种长度的密钥: ...

最新文章

  1. SystemCenter2012SP1实践(6)SCVMM管理XenServer
  2. Appdelegate跳转到指定tabbaritem
  3. JZOJ 4161. 于神之怒
  4. 【leetcode】Remove Duplicates from Sorted Array
  5. Socket编程中,阻塞与非阻塞的区别
  6. php网页框架模板,用PHP制作静态网站的模板框架(四)
  7. IT近年最新技术一览
  8. 使用libx265对YUV进行h265编码
  9. oracle导出报错00091,exp报错:EXP-00091 Exporting questionable statistics
  10. win10连接win7共享打印机(win10连接win7共享打印机)
  11. supervise进程管理利器
  12. 美景订餐管理系统--用于公司内部加班订餐
  13. 熊猫压缩怎么使用_记录随时间变化的PagerDuty事件(使用熊猫)
  14. 给力文:网络营销就像娶美女做老婆(转)
  15. python爬取京东图书_Python抓取京东图书评论数据
  16. Go语言的流程结构简单介绍
  17. 在pypi上发布python包详细教程
  18. Mysql-12章-函数和操作符 (翻译+理解)
  19. 过来人告诉你,去工作前最好还是学学Git
  20. 编写一个函数判断一个整数是不是素数c语言,编写函数判断一个整数是否为素数....

热门文章

  1. jtabel 遍历_使用抽象表模型获取JTable中选定的行
  2. PgSql备份pg_dump与还原手记pg_restore(转)
  3. python的requests模块功能_python中requests模块的使用方法
  4. linux c统计进程网络读写,linux网络分析、性能分析、文本格式化、文件读写操作之利器(mtr、top、jq、sponge)...
  5. matlab中的logspace,matlab中的logspace(a,b,n)究竟怎么理解,看下例题,谁能详细解给我看...
  6. cascade sqlite 数据库_ON DELETE CASCADE无法正常工作在ios中的sqlite3中
  7. 分享我工作10年收藏的程序员技术网站
  8. linux prelink.cache,Linux基础操作
  9. React 父组件和子组件中的方法相互调用
  10. 【WXS全局对象】Date