密钥

【AES】

一种对称加密算法,DES的取代者。

加密相关文章见:Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA

 

【代码】

代码比较多,有一部分非本文章内容代码,具体自己看吧。

 

[java] view plaincopy
print?在CODE上查看代码片派生到我的代码片
  1. package com.uikoo9.util.encrypt;  
  2.   
  3. import java.math.BigInteger;  
  4. import java.security.MessageDigest;  
  5. import java.security.SecureRandom;  
  6.   
  7. import javax.crypto.Cipher;  
  8. import javax.crypto.KeyGenerator;  
  9. import javax.crypto.spec.SecretKeySpec;  
  10.   
  11. import sun.misc.BASE64Decoder;  
  12. import sun.misc.BASE64Encoder;  
  13.   
  14. import com.uikoo9.util.QStringUtil;  
  15.   
  16. /** 
  17.  * 编码工具类 
  18.  * 1.将byte[]转为各种进制的字符串 
  19.  * 2.base 64 encode 
  20.  * 3.base 64 decode 
  21.  * 4.获取byte[]的md5值 
  22.  * 5.获取字符串md5值 
  23.  * 6.结合base64实现md5加密 
  24.  * 7.AES加密 
  25.  * 8.AES加密为base 64 code 
  26.  * 9.AES解密 
  27.  * 10.将base 64 code AES解密 
  28.  * @author uikoo9 
  29.  * @version 0.0.7.20140601 
  30.  */  
  31. public class QEncodeUtil {  
  32.       
  33.     public static void main(String[] args) throws Exception {  
  34.         String content = "我爱你";  
  35.         System.out.println("加密前:" + content);  
  36.   
  37.         String key = "123456";  
  38.         System.out.println("加密密钥和解密密钥:" + key);  
  39.           
  40.         String encrypt = aesEncrypt(content, key);  
  41.         System.out.println("加密后:" + encrypt);  
  42.           
  43.         String decrypt = aesDecrypt(encrypt, key);  
  44.         System.out.println("解密后:" + decrypt);  
  45.     }  
  46.       
  47.     /** 
  48.      * 将byte[]转为各种进制的字符串 
  49.      * @param bytes byte[] 
  50.      * @param radix 可以转换进制的范围,从Character.MIN_RADIX到Character.MAX_RADIX,超出范围后变为10进制 
  51.      * @return 转换后的字符串 
  52.      */  
  53.     public static String binary(byte[] bytes, int radix){  
  54.         return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数  
  55.     }  
  56.       
  57.     /** 
  58.      * base 64 encode 
  59.      * @param bytes 待编码的byte[] 
  60.      * @return 编码后的base 64 code 
  61.      */  
  62.     public static String base64Encode(byte[] bytes){  
  63.         return new BASE64Encoder().encode(bytes);  
  64.     }  
  65.       
  66.     /** 
  67.      * base 64 decode 
  68.      * @param base64Code 待解码的base 64 code 
  69.      * @return 解码后的byte[] 
  70.      * @throws Exception 
  71.      */  
  72.     public static byte[] base64Decode(String base64Code) throws Exception{  
  73.         return QStringUtil.isEmpty(base64Code) ? null : new BASE64Decoder().decodeBuffer(base64Code);  
  74.     }  
  75.       
  76.     /** 
  77.      * 获取byte[]的md5值 
  78.      * @param bytes byte[] 
  79.      * @return md5 
  80.      * @throws Exception 
  81.      */  
  82.     public static byte[] md5(byte[] bytes) throws Exception {  
  83.         MessageDigest md = MessageDigest.getInstance("MD5");  
  84.         md.update(bytes);  
  85.           
  86.         return md.digest();  
  87.     }  
  88.       
  89.     /** 
  90.      * 获取字符串md5值 
  91.      * @param msg  
  92.      * @return md5 
  93.      * @throws Exception 
  94.      */  
  95.     public static byte[] md5(String msg) throws Exception {  
  96.         return QStringUtil.isEmpty(msg) ? null : md5(msg.getBytes());  
  97.     }  
  98.       
  99.     /** 
  100.      * 结合base64实现md5加密 
  101.      * @param msg 待加密字符串 
  102.      * @return 获取md5后转为base64 
  103.      * @throws Exception 
  104.      */  
  105.     public static String md5Encrypt(String msg) throws Exception{  
  106.         return QStringUtil.isEmpty(msg) ? null : base64Encode(md5(msg));  
  107.     }  
  108.       
  109.     /** 
  110.      * AES加密 
  111.      * @param content 待加密的内容 
  112.      * @param encryptKey 加密密钥 
  113.      * @return 加密后的byte[] 
  114.      * @throws Exception 
  115.      */  
  116.     public static byte[] aesEncryptToBytes(String content, String encryptKey) throws Exception {  
  117.         KeyGenerator kgen = KeyGenerator.getInstance("AES");  
  118.         kgen.init(128, new SecureRandom(encryptKey.getBytes()));  
  119.   
  120.         Cipher cipher = Cipher.getInstance("AES");  
  121.         cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(kgen.generateKey().getEncoded(), "AES"));  
  122.           
  123.         return cipher.doFinal(content.getBytes("utf-8"));  
  124.     }  
  125.       
  126.     /** 
  127.      * AES加密为base 64 code 
  128.      * @param content 待加密的内容 
  129.      * @param encryptKey 加密密钥 
  130.      * @return 加密后的base 64 code 
  131.      * @throws Exception 
  132.      */  
  133.     public static String aesEncrypt(String content, String encryptKey) throws Exception {  
  134.         return base64Encode(aesEncryptToBytes(content, encryptKey));  
  135.     }  
  136.       
  137.     /** 
  138.      * AES解密 
  139.      * @param encryptBytes 待解密的byte[] 
  140.      * @param decryptKey 解密密钥 
  141.      * @return 解密后的String 
  142.      * @throws Exception 
  143.      */  
  144.     public static String aesDecryptByBytes(byte[] encryptBytes, String decryptKey) throws Exception {  
  145.         KeyGenerator kgen = KeyGenerator.getInstance("AES");  
  146.         kgen.init(128, new SecureRandom(decryptKey.getBytes()));  
  147.           
  148.         Cipher cipher = Cipher.getInstance("AES");  
  149.         cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(kgen.generateKey().getEncoded(), "AES"));  
  150.         byte[] decryptBytes = cipher.doFinal(encryptBytes);  
  151.           
  152.         return new String(decryptBytes);  
  153.     }  
  154.       
  155.     /** 
  156.      * 将base 64 code AES解密 
  157.      * @param encryptStr 待解密的base 64 code 
  158.      * @param decryptKey 解密密钥 
  159.      * @return 解密后的string 
  160.      * @throws Exception 
  161.      */  
  162.     public static String aesDecrypt(String encryptStr, String decryptKey) throws Exception {  
  163.         return QStringUtil.isEmpty(encryptStr) ? null : aesDecryptByBytes(base64Decode(encryptStr), decryptKey);  
  164.     }  
  165.       
  166. }  
package com.uikoo9.util.encrypt;import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.SecureRandom;import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;import com.uikoo9.util.QStringUtil;/*** 编码工具类* 1.将byte[]转为各种进制的字符串* 2.base 64 encode* 3.base 64 decode* 4.获取byte[]的md5值* 5.获取字符串md5值* 6.结合base64实现md5加密* 7.AES加密* 8.AES加密为base 64 code* 9.AES解密* 10.将base 64 code AES解密* @author uikoo9* @version 0.0.7.20140601*/
public class QEncodeUtil {public static void main(String[] args) throws Exception {String content = "我爱你";System.out.println("加密前:" + content);String key = "123456";System.out.println("加密密钥和解密密钥:" + key);String encrypt = aesEncrypt(content, key);System.out.println("加密后:" + encrypt);String decrypt = aesDecrypt(encrypt, key);System.out.println("解密后:" + decrypt);}/*** 将byte[]转为各种进制的字符串* @param bytes byte[]* @param radix 可以转换进制的范围,从Character.MIN_RADIX到Character.MAX_RADIX,超出范围后变为10进制* @return 转换后的字符串*/public static String binary(byte[] bytes, int radix){return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数}/*** base 64 encode* @param bytes 待编码的byte[]* @return 编码后的base 64 code*/public static String base64Encode(byte[] bytes){return new BASE64Encoder().encode(bytes);}/*** base 64 decode* @param base64Code 待解码的base 64 code* @return 解码后的byte[]* @throws Exception*/public static byte[] base64Decode(String base64Code) throws Exception{return QStringUtil.isEmpty(base64Code) ? null : new BASE64Decoder().decodeBuffer(base64Code);}/*** 获取byte[]的md5值* @param bytes byte[]* @return md5* @throws Exception*/public static byte[] md5(byte[] bytes) throws Exception {MessageDigest md = MessageDigest.getInstance("MD5");md.update(bytes);return md.digest();}/*** 获取字符串md5值* @param msg * @return md5* @throws Exception*/public static byte[] md5(String msg) throws Exception {return QStringUtil.isEmpty(msg) ? null : md5(msg.getBytes());}/*** 结合base64实现md5加密* @param msg 待加密字符串* @return 获取md5后转为base64* @throws Exception*/public static String md5Encrypt(String msg) throws Exception{return QStringUtil.isEmpty(msg) ? null : base64Encode(md5(msg));}/*** AES加密* @param content 待加密的内容* @param encryptKey 加密密钥* @return 加密后的byte[]* @throws Exception*/public static byte[] aesEncryptToBytes(String content, String encryptKey) throws Exception {KeyGenerator kgen = KeyGenerator.getInstance("AES");kgen.init(128, new SecureRandom(encryptKey.getBytes()));Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(kgen.generateKey().getEncoded(), "AES"));return cipher.doFinal(content.getBytes("utf-8"));}/*** AES加密为base 64 code* @param content 待加密的内容* @param encryptKey 加密密钥* @return 加密后的base 64 code* @throws Exception*/public static String aesEncrypt(String content, String encryptKey) throws Exception {return base64Encode(aesEncryptToBytes(content, encryptKey));}/*** AES解密* @param encryptBytes 待解密的byte[]* @param decryptKey 解密密钥* @return 解密后的String* @throws Exception*/public static String aesDecryptByBytes(byte[] encryptBytes, String decryptKey) throws Exception {KeyGenerator kgen = KeyGenerator.getInstance("AES");kgen.init(128, new SecureRandom(decryptKey.getBytes()));Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(kgen.generateKey().getEncoded(), "AES"));byte[] decryptBytes = cipher.doFinal(encryptBytes);return new String(decryptBytes);}/*** 将base 64 code AES解密* @param encryptStr 待解密的base 64 code* @param decryptKey 解密密钥* @return 解密后的string* @throws Exception*/public static String aesDecrypt(String encryptStr, String decryptKey) throws Exception {return QStringUtil.isEmpty(encryptStr) ? null : aesDecryptByBytes(base64Decode(encryptStr), decryptKey);}}


【输出】

 

 

[java] view plaincopy
print?在CODE上查看代码片派生到我的代码片
    1. 加密前:我爱你  
    2. 加密密钥和解密密钥:123456  
    3. 加密后:A63fa7DjAe3yYji44BTm1g==  
    4. 解密后:我爱你  


      由于文章年数就远,声明此文章转载并非本人所写,在此向作者致谢

转载于:https://www.cnblogs.com/honey01/p/6281610.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql复制安全性_从MySQL复制功能中得到一举三得实惠

在MySQL数据库中,支持单项、异步复制。在复制过程中,一个服务器充当主服务器,而另外一台服务器充当从服务器。如下图所示。此时主服务器会将更新信息写入到一个特定的二进制文件中。并会维护文件的一个索引用来跟踪日志循环。这个日志可以记录…

自定义安装mysql linux_linux下 安装mysql 问题

展开全部因为32313133353236313431303231363533e4b893e5b19e31333365633934mysql程序在启动的时候 非常依赖my.cnf里面的配置,而my.cnf文件中的配置,在执行mysql初始化的时候就可以手动指定。如果mysql不是使用yum安装,而是将mysql安装到自定…

前端学习(2244):计算器显示问题

<!DOCTYPE html> <html><head><meta charset"utf-8" /><title>奥里给&#xff01;</title><style type"text/css">.a {height: 100px;width: 450px;border: 3px solid black;background-color: beige;font-size…

MySQL索引原理及慢查询优化

MySQL凭借着出色的性能、低廉的成本、丰富的资源&#xff0c;已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色&#xff0c;但所谓“好马配好鞍”&#xff0c;如何能够更好的使用它&#xff0c;已经成为开发工程师的必修课&#xff0c;我们经常会从职位描述上看到诸…

C语言沉浸式刷题【C语言必刷题】

1.猜凶手 某地发生了一起谋杀案&#xff0c;警察通过排查确定杀人凶手必为四个嫌疑犯的一个&#xff0c;以下是4个嫌犯的供词。已知&#xff08;请编写代码找出凶手&#xff09; A说&#xff1a;不是我。 B说&#xff1a;是C。C说&#xff1a;是D。D说&#xff1a;C再胡说。 程…

python3 while循环语句_python While 循环语句

python While 循环语句发布时间&#xff1a;2018-02-12 16:46:28编辑&#xff1a;admin阅读(2055)python 编程中 while 语句用于循环执行程序&#xff0c;即在某条件下&#xff0c;循环执行某段程序&#xff0c;以处理需要重复处理的相同任务。其基本形式为&#xff1a;while 判…

Axure 共享强制签出签入

签出时点击不签出编辑全部——确定修改后签入时点击全部偷偷签出——确定注意一定要修改后&#xff0c;否则无法检测到修改&#xff0c;不会执行签入

关于逐项作用函数的用法

关于逐项作用函数的用法讲一下Thread这个函数的用法&#xff0c;其中后面两个用法很好用&#xff0c;也常常被忽略。用法一&#xff1a;比较常用用法二&#xff1a;我觉得这一种是很实用的有拓展的方法用法三&#xff1a;构造一种映射关系&#xff0c;在配合 Association[] 关联…

git clone 时候出现Please make sure you have the correct access rights and the repository exists.

输入 git clone 命令时出现Please make sure you have the correct access rights and the repository exists.错误&#xff0c;出现改问题的原因是git服务器没有存储本地ssh密钥。 解决步骤&#xff1a; 1. 删除 .ssh 文件夹【C:\Users\(本地用户名)\.ssh】 中的 known_host…

java io之图片存取

一&#xff1a;建表 二&#xff1a;获取数据库连接 1&#xff1a;导入mysql的驱动jar包&#xff0c;mysql-connector-java-5.1.8-bin.jar 2&#xff1a;写代码连接数据库&#xff0c;如下&#xff1a; 1 /**2 * 3 */ 4 package com.hlcui.file; 5 6 import java.sql.Connec…