WEB 加密解密小系统

来源:互联网 发布:软件空免费下载 编辑:程序博客网 时间:2024/05/22 11:59

http://cuisuqiang.iteye.com/blog/1751523

WEB 加密解密小系统

    博客分类:
  • J2EE
desaes加密解密cuisuqiang

又是在翻阅以前东西时发现了一个WEB加密解密的小系统,麻雀虽小五脏俱全,虽然是以前写的,但是多少有一些参考价值!

系统对每一个文件都录入独立的密码,在查看详细时会要求输入!

系统可以选择AES或DES进行加密,独立密码使用MD5加密后截取作为密钥!

如需参考可下载附件,里面有建库脚本,代码注释和很详尽,欢迎讨论!

请您到ITEYE网站看原创,谢谢!

http://cuisuqiang.iteye.com/ !

系统有注册和登录,显示用户文件,增加文件,显示和删除文件的操作:

系统截图如下:

登录:

用户主页:

新增文件:

查看详细,会要求输入独立密码:

显示:

系统代码目录:

以上为系统展示,详细代码在下面附件中!

加密解密的处理类是:

Java代码 复制代码 收藏代码
  1. package org.util; 
  2.  
  3. import javax.crypto.Cipher; 
  4. import javax.crypto.spec.SecretKeySpec; 
  5.  
  6. /**
  7. * 加密解密工具类 AES 密钥长度为128,192,256 DES密钥长度为56
  8. * @说明
  9. * @author cuisuqiang
  10. * @version 1.0
  11. * @since
  12. */ 
  13. public class EncodingUtil { 
  14.  
  15.     /**
  16.      * 加密方法
  17.      * @param plainText
  18.      * @param passWord
  19.      * @param model 可是为AES或DES,但是密钥长度必须一致
  20.      * @return
  21.      */ 
  22.     public static String encrypt(String plainText, String passWord, 
  23.             String model) { 
  24.         try
  25.             // 将密码转为字节数组 
  26.             byte[] key = passWord.getBytes("utf-8"); 
  27.             // 构造密钥的功能类 
  28.             SecretKeySpec skeySpec = new SecretKeySpec(key, model); 
  29.             // 用指定的加密模式得到一个加密的功能类 
  30.             Cipher cipher = Cipher.getInstance(model); 
  31.             // 用密钥和模式初始化功能类 
  32. cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
  33.             // 执行操作 
  34.             byte[] decryptText = cipher.doFinal(plainText.getBytes("utf-8")); 
  35.             // 转为指定字符串 
  36.             return byte2hex(decryptText); 
  37.         } catch (Exception e) { 
  38.             e.printStackTrace(); 
  39.             return null
  40.         } 
  41.     } 
  42.  
  43.     /**
  44.      * 解密方法
  45.      * @param cipherText
  46.      * @param passWord
  47.      * @param model 可是为AES或DES,但是密钥长度必须一致
  48.      * @return
  49.      */ 
  50.     public static String decrypt(String cipherText, String passWord, 
  51.             String model) { 
  52.         try
  53.             // 将密码转为字节数组 
  54.             byte[] key = passWord.getBytes("utf-8"); 
  55.             // 构造密钥的功能类 
  56.             SecretKeySpec skeySpec = new SecretKeySpec(key, model); 
  57.             // 用指定的加密模式得到一个加密的功能类 
  58.             Cipher cipher = Cipher.getInstance(model); 
  59.             // 用密钥和模式初始化功能类 
  60.             cipher.init(Cipher.DECRYPT_MODE, skeySpec); 
  61.             // 执行操作 
  62.             byte[] plainText = cipher.doFinal(hex2byte(cipherText)); 
  63.             // 转为指定字符串 
  64.             return new String(plainText,"utf-8"); 
  65.         } catch (Exception e) { 
  66.             e.printStackTrace(); 
  67.             return null
  68.         } 
  69.     } 
  70.  
  71.     /**
  72.      * 16进制字符串转换成字节码
  73.      * @param strhex
  74.      * @return
  75.      */ 
  76.     private staticbyte[] hex2byte(String strhex) { 
  77.         if (strhex == null) { 
  78.             return null
  79.         } 
  80.         int l = strhex.length(); 
  81.         if (l % 2 ==1) { 
  82.             return null
  83.         } 
  84.         byte[] b = newbyte[l / 2]; 
  85.         for (int i =0; i != l / 2; i++) { 
  86.             b[i] = (byte) Integer.parseInt(strhex.substring(i *2, i * 2 +2), 
  87.                     16); 
  88.         } 
  89.         return b; 
  90.     } 
  91.  
  92.     /**
  93.      * 字节码转换成16进制字符串
  94.      * @param b
  95.      * @return
  96.      */ 
  97.     private static String byte2hex(byte[] b) { 
  98.         String hs = ""
  99.         String stmp = ""
  100.         for (int n =0; n < b.length; n++) { 
  101.             stmp = (java.lang.Integer.toHexString(b[n] & 0XFF)); 
  102.             if (stmp.length() == 1) { 
  103.                 hs = hs + "0" + stmp; 
  104.             } else
  105.                 hs = hs + stmp; 
  106.             } 
  107.         } 
  108.         return hs.toUpperCase(); 
  109.     } 

注意我们这里使用的JDBC操作数据库,运行时要先创建数据库:

Java代码 复制代码 收藏代码
  1. -- MYSQL上执行 
  2. DROP database IF EXISTS `pro_07`; 
  3. CREATE DATABASE `pro_07` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 
  4. use pro_07; 
  5. DROP TABLE IF EXISTS `t_note`; 
  6. CREATE TABLE `t_note` ( 
  7.   `id` int(11) NOT NULL AUTO_INCREMENT, 
  8.   `title` varchar(255) DEFAULT NULL, 
  9.   `context` varchar(255) DEFAULT NULL, 
  10.   `create_time` varchar(255) DEFAULT NULL, 
  11.   `newpass` varchar(255) DEFAULT NULL, 
  12.   `userid` int(11) DEFAULT NULL, 
  13.   `encode_type` int(11) DEFAULT NULL, 
  14.   PRIMARY KEY (`id`) 
  15. ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
  16.  
  17. DROP TABLE IF EXISTS `t_users`; 
  18. CREATE TABLE `t_users` ( 
  19.   `id` int(11) NOT NULL AUTO_INCREMENT, 
  20.   `username` varchar(255) DEFAULT NULL, 
  21.   `userpass` varchar(255) DEFAULT NULL, 
  22.   PRIMARY KEY (`id`) 
  23. ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

其他的都是一些逻辑上的操作!

请您到ITEYE网站看原创,谢谢!

http://cuisuqiang.iteye.com/ !

  • pro_07.zip (1 MB)
  • 下载次数: 189
原创粉丝点击