发表于: 2017-09-15 22:37:16

1 736


今天完成的事情:完成了任务五的拆分 任务基本要求是要先写一个登录界面完成登录 或者注册

                            


          然后看了一下md5加密 以及加盐des加密 

大致理解了他们的概念 md5不可逆 但是如果太过简单  可以通过彩虹表对比出来

不可逆是指加密后的数据本身不能还原为原始密码

但是因为md5算法本身固定 把一些简单密码全部用md5加密 得到的数据就叫做彩虹表

这样对比彩虹表就可以知道一些简单的密码了 可能用户自己设置的密码是简单密码

所以这里就要加盐 就是在用户设置的密码前后在拼接一个字符串作为盐 

来使得这个简单密码变得复杂 在进行md5加密 

而des加密是对称加密 使用56位密钥根据一些列操作来加密

网上百度了一个例子


import java.security.SecureRandom;

import javax.crypto.spec.DESKeySpec;

import javax.crypto.SecretKeyFactory;

import javax.crypto.SecretKey;

import javax.crypto.Cipher;

/**

 * DES加密介绍 DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究, 后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,

24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现 。

 * 注意:DES加密和解密过程中,密钥长度都必须是8的倍数

 */

public class DES

{

public DES()

{

}

// 测试

public static void main(String args[])

{

// 待加密内容

String str = "测试内容";

// 密码,长度要是8的倍数

String password = "9588028820109132570743325311898426347857298773549468758875018579537757772163084478873699447306034466200616411960574122434059469100235892702736860872901247123456";

byte[] result = DES.encrypt(str.getBytes(), password);

System.out.println("加密后:" + new String(result));

// 直接将如上内容解密

try

{

byte[] decryResult = DES.decrypt(result, password);

System.out.println("解密后:" + new String(decryResult));

} catch (Exception e1)

{

e1.printStackTrace();

}

}

/**

* 加密

* @param datasource

*            byte[]

* @param password

*            String

* @return byte[]

*/

public static byte[] encrypt(byte[] datasource, String password)

{

try

{

SecureRandom random = new SecureRandom();

DESKeySpec desKey = new DESKeySpec(password.getBytes());

// 创建一个密匙工厂,然后用它把DESKeySpec转换成

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

SecretKey securekey = keyFactory.generateSecret(desKey);

// Cipher对象实际完成加密操作

Cipher cipher = Cipher.getInstance("DES");

// 用密匙初始化Cipher对象

cipher.init(Cipher.ENCRYPT_MODE, securekey, random);

// 现在,获取数据并加密

// 正式执行加密操作

return cipher.doFinal(datasource);

} catch (Throwable e)

{

e.printStackTrace();

}

return null;

}

/**

* 解密

* @param src

*            byte[]

* @param password

*            String

* @return byte[]

* @throws Exception

*/

public static byte[] decrypt(byte[] src, String password) throws Exception

{

// DES算法要求有一个可信任的随机数源

SecureRandom random = new SecureRandom();

// 创建一个DESKeySpec对象

DESKeySpec desKey = new DESKeySpec(password.getBytes());

// 创建一个密匙工厂

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

// 将DESKeySpec对象转换成SecretKey对象

SecretKey securekey = keyFactory.generateSecret(desKey);

// Cipher对象实际完成解密操作

Cipher cipher = Cipher.getInstance("DES");

// 用密匙初始化Cipher对象

cipher.init(Cipher.DECRYPT_MODE, securekey, random);

// 真正开始解密操作

return cipher.doFinal(src);

}

完全没看懂 md5也是 不过好像也不需要看懂 直接借鉴相关的工具类

http://z2009zxiaolong.iteye.com/blog/1562197 这里有写好的工具类

主要还是写接口  接口写在controller里面

这个逻辑有点没理清  就是应该是在数据库里面进行加密还是在service加密

新建了一个数据库 储存相应的信息

然后就是调用数据库一个是注册一个是登录验证 

写的有问题 注册就失败了

                      
明天计划的事情:写好登录 注册
遇到的问题:接口不会写 逻辑有点不清楚 加密 在哪个位置开始加密啊 然后还需要解密 在哪里解密啊

      不能写在controller里吧 在写service里面吗 

完全没搞懂什么鬼

收获:学习了md5加密 加盐 des加密的概念   大致了解了如何在java程序里面使用 

              又看了拦截器 过滤器 监听器的概念

拦截器 :是面向切面编程的,就是在你的service或者一个方法的时候,前调用一个方法,或者在方法后调用一个方法。比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。拦截器请求是通过实现HandlerInterceptor接口来完成的.HandlerInterceptor接口定义了三个方法,spring mvc就是通过这三个方法来对用户请求进行拦截处理

滤器:是在springmvc中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数。

然后再传入servlet进行业务逻辑,比如过滤掉非法url。或者在传入servlet前统一设置字符集,或者去除掉一些非法字符。主要为了减轻服务器负载,减少压力。

拦截器和过滤器的一些区别拦截器是基于java的反射机制的,而过滤器是基于函数回调;过滤器依赖与servlet容器,而拦截器不依赖与servlet容器;拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用;拦截器可以访问action上下文、值栈里的对象,而过滤器不能;在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

监听器是实现了javax.servlet.ServletContextListener接口的服务器端程序,它也是随web应用的启动而启动,只初始化了一次,随web应用的停止而销毁。主要作用是:做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。


         任务开始时间:9.15

         预计完成时间:9.20

         是否有延期风险:暂无

禅道链接:http://task.ptteng.com/zentao/my-task.html




返回列表 返回列表
评论

    分享到