java使用AES加密解密 AES-128-ECB加密

  1. import javax.crypto.Cipher;
  2. import javax.crypto.spec.SecretKeySpec;
  3.  
  4. import org.apache.commons.codec.binary.Base64;
  5. /**
  6. *
  7. * @author Administrator
  8. *
  9. */
  10. public class AES {
  11.  
  12. // 加密
  13. public static String Encrypt(String sSrc, String sKey) throws Exception {
  14. if (sKey == null) {
  15. System.out.print("Key为空null");
  16. return null;
  17. }
  18. // 判断Key是否为16位
  19. if (sKey.length() != 16) {
  20. System.out.print("Key长度不是16位");
  21. return null;
  22. }
  23. byte[] raw = sKey.getBytes("utf-8");
  24. SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
  25. Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式"
  26. cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
  27. byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));
  28.  
  29. return new Base64().encodeToString(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。
  30. }
  31.  
  32. // 解密
  33. public static String Decrypt(String sSrc, String sKey) throws Exception {
  34. try {
  35. // 判断Key是否正确
  36. if (sKey == null) {
  37. System.out.print("Key为空null");
  38. return null;
  39. }
  40. // 判断Key是否为16位
  41. if (sKey.length() != 16) {
  42. System.out.print("Key长度不是16位");
  43. return null;
  44. }
  45. byte[] raw = sKey.getBytes("utf-8");
  46. SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
  47. Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
  48. cipher.init(Cipher.DECRYPT_MODE, skeySpec);
  49. byte[] encrypted1 = new Base64().decode(sSrc);//先用base64解密
  50. try {
  51. byte[] original = cipher.doFinal(encrypted1);
  52. String originalString = new String(original,"utf-8");
  53. return originalString;
  54. } catch (Exception e) {
  55. System.out.println(e.toString());
  56. return null;
  57. }
  58. } catch (Exception ex) {
  59. System.out.println(ex.toString());
  60. return null;
  61. }
  62. }
  63.  
  64. public static void main(String[] args) throws Exception {
  65. /*
  66. * 此处使用AES-128-ECB加密模式,key需要为16位。
  67. */
  68. String cKey = "1234567890123456";
  69. // 需要加密的字串
  70. String cSrc = "www.gowhere.so";
  71. System.out.println(cSrc);
  72. // 加密
  73. String enString = AES.Encrypt(cSrc, cKey);
  74. System.out.println("加密后的字串是:" + enString);
  75.  
  76. // 解密
  77. String DeString = AES.Decrypt(enString, cKey);
  78. System.out.println("解密后的字串是:" + DeString);
  79. }
  80. }
  81.  
  82. //源代码片段来自云代码http://yuncode.net

java使用AES加密解密 AES-128-ECB加密的更多相关文章

  1. php AES cbc模式 pkcs7 128位加密解密(微信小程序)

    PHP AES CBC模式PKCS7 128位加密 加密: $key = '1234567812345678'; $iv = '1234567890123456'; $message = '12345 ...

  2. 使用python进行加密解密AES算法

    使用python进行加密解密AES算法-代码分享-PYTHON开发者社区-pythoner.org 使用python进行加密解密AES算法 TY 发布于 2011-09-26 21:36:53,分类: ...

  3. AES加密解密 助手类 CBC加密模式

    "; string result1 = AESHelper.AesEncrypt(str); string result2 = AESHelper.AesDecrypt(result1); ...

  4. 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)

    原文:各种加密解密函数(URL加密解密.sha1加密解密.des加密解密) 普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语 ...

  5. php中des加密解密 匹配C#des加密解密 对称加密

    原文:php中des加密解密 匹配C#des加密解密 对称加密 网上找来的 php des加密解密 完全匹配上一篇C# 字符串加密解密函数  可以用于C#和php通信 对数据进行加密,其中$key 是 ...

  6. AES加密解密——AES在JavaWeb项目中前台JS加密,后台Java解密的使用

    一:前言 在软件开发中,经常要对数据进行传输,数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的.因此就要对需要传输的数据进行在客户端进行加密 ...

  7. Java对称与非对称加密解密,AES与RSA

    加密技术可以分为对称与非对称两种. 对称加密,解密,即加密与解密用的是同一把秘钥,常用的对称加密技术有DES,AES等 而非对称技术,加密与解密用的是不同的秘钥,常用的非对称加密技术有RSA等 为什么 ...

  8. .NET AES加解密(128位)

    AES加密(128位): /// <summary> /// 有密码的AES加密 /// </summary> internal static string Encrypt(s ...

  9. 加密解密 AES RSA MD5 SHA

    加密解密: 对称加密:加密和解密相同秘钥.常见算法:AES, XTEA, 3DES. 非对称加密: 公钥加密 私钥加密. 加密和解密秘钥不同.常见算法:RSA OpenSSL> genrsa - ...

  10. java微信小程序解密AES/CBC/PKCS7Padding

    摘要:微信小程序解密建议使用1.6及以上的环境使用maven下载jar包org.bouncycastlebcprov-jdk15on1.55加密类代码importorg.bouncycastle.jc ...

随机推荐

  1. Android手机怎样录制屏幕及转GIF

    有时候我们须要录制Android 手机的屏幕,比方写了一个Demo应用,须要公布到博客和微博上. 例如以下是我录制转GIF的效果图 对于Android4.4的上的手机,系统自带了一个命令screenr ...

  2. Python 学习入门(22)—— 线程同步

    Python主要通过标准库中的threading包来实现多线程.在当今网络时代,每个服务器都会接收到大量的请求.服务器可以利用多线程的方式来处理这些请求,以提高对网络端口的读写效率.Python是一种 ...

  3. faith的23堂课:培养良好的工作方法与做事风格

    目标:通过每天一点的学习和实践,逐步形成好的做事风格和工作生活习惯. 方式:每天教一点,实践一点. 第一课 计划与总结,工作日志,戴明环 第二课 目的性:搞清楚,你每个行为的目的 第三课 目标管理,调 ...

  4. 手动配置S2SH三大框架报错(一)

    十二月 08, 2013 9:24:51 下午 org.apache.catalina.core.AprLifecycleListener init 严重: An incompatible versi ...

  5. Xamainr 地图之webview初探

    一 说几点 当下移动开发主要实现方式有传统的Native以及新的混合开发想Rect.js,nodejs这些前段框架,其本质要么是原生控件来实现UI,要么html来实现UI.Xamarin其实也只是取巧 ...

  6. Ajax技术--考试计时并自动提交试卷

    1.概述 在开发网络考试系统时,考试计时并自动提交试卷是必不可少的功能.由于在答卷过程中,试卷不能刷新,所以需要使用Ajax实现无刷新操作.运行本实例,访问准备考试页面index.jsp,在该页面中, ...

  7. 使用elk+redis搭建nginx日志分析平台(转)

    logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态等都有日志文件进行记录.其次,需要有个队列,re ...

  8. 与众不同 windows phone (26) - Contacts and Calendar(联系人和日历)

    原文:与众不同 windows phone (26) - Contacts and Calendar(联系人和日历) [索引页][源码下载] 与众不同 windows phone (26) - Con ...

  9. 对struts2的OGNL的理解

    OGNL:Object-Graph Navigation Language.对象图形化导航语言 OGNL是集成进struts2框架中比較强大的技术有助于传输数据和类型转换,OGNL由表达式语言和类型装 ...

  10. [Android学习笔记]view的layout过程学习

    View从创建到显示到屏幕需要经历几个过程: measure -> layout -> draw measure过程:计算view所占屏幕大小layout过程:设置view在屏幕的位置dr ...