发表于: 2017-05-01 21:22:24

2 1359


今天完成的事情:

DES加密概念
DES全称Data Encryptoin Standard,即数据加密标准,是一种使用秘钥加密的块算法,DES算法为密码体制中的对称码体制,又称为美国数据加密标准。明文按64位进行分组,秘钥长64位,秘钥事实上是56位参与DES运算(第8,16,24,32,40,48,56,64位是校验位,使得每一个秘钥都有奇数个1)分组后的明文组和56位的秘钥按位代替或者交换的方式形成密文组的加密方法。
基本原理
入口参数有三个:key,data,mode。key为加密解密使用的秘钥,data未加密解密的数据,mode为其工作模式、当模式为加密模式时,明文按照64为进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,秘钥只用到了64位中的56位,这样才具有高的安全性。
对DES算法工作完全看不懂。只是对照例子敲了一遍,测试一遍成功了。
public class DES {
    public DES(){
    }
    //加密
    public static byte[] encrype(byte[] datasource,String password){
        try{
            SecureRandom random new SecureRandom();
            DESKeySpec desKey new DESKeySpec(password.getBytes());
            //创建一个秘钥工厂,然后用它把DESKeySpec转换成
            SecretKeyFactory keyFactory SecretKeyFactory.getInstance("DES");
            SecretKey securekry keyFactory.generateSecret(desKey);
            //Cipher对象实际完成加密操作
            Cipher cipher Cipher.getInstance("DES");
            //用秘钥初始化Cipher对象
            cipher.init(Cipher.ENCRYPT_MODE,securekry,random);
            //现在,获取数据并加密
            //正在执行加密操作
            return cipher.doFinal(datasource);
        }catch(Throwable e){
            e.printStackTrace();
        }
        return null;
    }
    //解密
    public static byte[] decrypt(byte[] src,String passwordthrows Exception{
       //DES算法要求有一个可信任的随机数源
        SecureRandom random new SecureRandom();
        //创建一个DESKeySpec对象
        DESKeySpec desKey new DESKeySpec(password.getBytes());
        //创建一个密钥工厂
        SecretKeyFactory keyFactory SecretKeyFactory.getInstance("DES");
        //DESKeySpec对象装换成SecretKey对象
        SecretKey secretKey keyFactory.generateSecret(desKey);
        //Cipher对象实际完成解密操作
        Cipher cipher Cipher.getInstance("DES");
        //用密钥初始化Cipher对象
        cipher.init(Cipher.DECRYPT_MODE,secretKey,random);
        //真正开始解密操作
        return cipher.doFinal(src);
    }
    //测试
    public static void main(String[] args){
        //待加密内容
        String str "ck天下第一最帅";
        //密码。长度要是8的倍数
        String password "9588028820109132570743325" +
                "31189842634785729877354946875887" +
                "50185795377577721630844788736994" +
                "47306034466267816411960574122434059" +
                "4691002358927027368608729" +
                "01247123456";
        byte[] result DES.encrype(str.getBytes(),password);
        System.out.println("加密后:"+new String(result));

        //直接将如上内容解密
        try{
            byte[] decryResult DES.decrypt(result,password);
            System.out.println("解密后:"+new String(decryResult));
        }catch (Exception e){
            e.printStackTrace();
        }
    }
运行结果:
什么是cookie?
cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。
由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理
什么是session?
浏览器访问服务器时,服务器会创建一个 session 对象(该对象有一个唯一的 id, 一般称为 sessionId)。服务器在缺省情况下,会将 sessionId 以 cookie 机制发送给浏览器。当浏览器再次访问服务器时, 会将sessionId 发送给服务器。 服务器依据 sessionId 就可以找到对应的 session 对象。
3.cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式。


明天计划的事情:

使用DES对用户ID和登录时间加密,生成Token,放入Cookie。中拦截器里通过Cookie中判断Token的有效性来判断用户是否登录。


遇到的问题:无


收获:

知道了cookie和session是什么,有什么用途,再就是加密什么的算法工作原理很难懂。。。





返回列表 返回列表
评论

    分享到