`
cuisuqiang
  • 浏览: 3935711 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3650303
社区版块
存档分类
最新评论

WEB 加密解密小系统

    博客分类:
  • J2EE
阅读更多

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

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

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

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

 

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

http://cuisuqiang.iteye.com/ !

 

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

系统截图如下:

登录:

用户主页:

 

 

新增文件:

 

 

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

 

显示:

 

系统代码目录:

 

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

 

加密解密的处理类是:

 

 

package org.util;

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

/**
 * 加密解密工具类 AES 密钥长度为128,192,256 DES密钥长度为56
 * @说明 
 * @author cuisuqiang
 * @version 1.0
 * @since
 */
public class EncodingUtil {

	/**
	 * 加密方法
	 * @param plainText
	 * @param passWord
	 * @param model 可是为AES或DES,但是密钥长度必须一致
	 * @return
	 */
	public static String encrypt(String plainText, String passWord,
			String model) {
		try {
			// 将密码转为字节数组
			byte[] key = passWord.getBytes("utf-8");
			// 构造密钥的功能类
			SecretKeySpec skeySpec = new SecretKeySpec(key, model);
			// 用指定的加密模式得到一个加密的功能类
			Cipher cipher = Cipher.getInstance(model);
			// 用密钥和模式初始化功能类
			cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
			// 执行操作
			byte[] decryptText = cipher.doFinal(plainText.getBytes("utf-8"));
			// 转为指定字符串
			return byte2hex(decryptText);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 解密方法
	 * @param cipherText
	 * @param passWord
	 * @param model 可是为AES或DES,但是密钥长度必须一致
	 * @return
	 */
	public static String decrypt(String cipherText, String passWord,
			String model) {
		try {
			// 将密码转为字节数组
			byte[] key = passWord.getBytes("utf-8");
			// 构造密钥的功能类
			SecretKeySpec skeySpec = new SecretKeySpec(key, model);
			// 用指定的加密模式得到一个加密的功能类
			Cipher cipher = Cipher.getInstance(model);
			// 用密钥和模式初始化功能类
			cipher.init(Cipher.DECRYPT_MODE, skeySpec);
			// 执行操作
			byte[] plainText = cipher.doFinal(hex2byte(cipherText));
			// 转为指定字符串
			return new String(plainText, "utf-8");
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 16进制字符串转换成字节码
	 * @param strhex
	 * @return
	 */
	private static byte[] hex2byte(String strhex) {
		if (strhex == null) {
			return null;
		}
		int l = strhex.length();
		if (l % 2 == 1) {
			return null;
		}
		byte[] b = new byte[l / 2];
		for (int i = 0; i != l / 2; i++) {
			b[i] = (byte) Integer.parseInt(strhex.substring(i * 2, i * 2 + 2),
					16);
		}
		return b;
	}

	/**
	 * 字节码转换成16进制字符串
	 * @param b
	 * @return
	 */
	private static String byte2hex(byte[] b) {
		String hs = "";
		String stmp = "";
		for (int n = 0; n < b.length; n++) {
			stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
			if (stmp.length() == 1) {
				hs = hs + "0" + stmp;
			} else {
				hs = hs + stmp;
			}
		}
		return hs.toUpperCase();
	}
}

 

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

 

 

-- MYSQL上执行
DROP database IF EXISTS `pro_07`;
CREATE DATABASE `pro_07` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
use pro_07;
DROP TABLE IF EXISTS `t_note`;
CREATE TABLE `t_note` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  `context` varchar(255) DEFAULT NULL,
  `create_time` varchar(255) DEFAULT NULL,
  `newpass` varchar(255) DEFAULT NULL,
  `userid` int(11) DEFAULT NULL,
  `encode_type` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `t_users`;
CREATE TABLE `t_users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `userpass` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

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

 

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

http://cuisuqiang.iteye.com/ !

自建博客地址:http://www.javacui.com/ ,内容与ITEYE同步!

9
2
分享到:
评论
5 楼 tiancheng52555 2012-12-29  
下载中。。。
4 楼 allloveend 2012-12-21  
为了注释,赞一个
3 楼 308202251 2012-12-21  
感谢分享。。
2 楼 nba 2012-12-21  
1 楼 bingki 2012-12-21  
不为别了,就为博主代码的详细注释和共享精神,感到敬佩。

相关推荐

Global site tag (gtag.js) - Google Analytics