对称加密与非对称加密

内容简介


1.keystore:数字证书
2.对称加密
3.非对称加密
4.消息摘要
5.https : 
6.破解加密算法:简单的加密算法

一.简单的加密算法

1.凯撒加密算法:
     凯撒大帝要给下属军官传递命令,为了防止被截获,于是大帝发明了凯撒加密算法;
2.原理:
     A--->B  根据ASCIN码表
3.手写一个凯撒加密算法
    String input = “HeiMa”;
    char [] charArray = input.toCharArray();
    遍历拿到每一个字符,并转成int类型
    对转成int类型的字符进行位移操作
4.频度分析法破解简单凯撒算法

二.对称加密

1.DES AES的原理
    底层对Byte位进行操作
    Des 密码长度8,64位,56指有效参与运算加密的只有7位,7 X 8 = 56;
    Aes 密码长度16,128位,
    Rsa 
2.序列化工具类
    将秘钥存储到文件  或者从文件读取秘钥
    ![des01](https://img-blog.csdn.net/20170511213609493?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    ![des02](https://img-blog.csdn.net/20170511213946936?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3.制定随机生成不变的秘钥
    ![徐大大的博客](https://img-blog.csdn.net/20170511214009531?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4.指定秘钥.不要生成,也不用储存到文件
    ![徐大大的博客](https://img-blog.csdn.net/20170511214047657?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
5.AES加密
      1.创建Cipher对象  
            Cipher cipher = Cipher.getInstance(AES);
      2.初始化 Cipher对象,告知工作模式  
            Cipher.init(Cipher.ENCRYPT_MODE,key)  
      3.进行加密
        ![徐大大的图片](https://img-blog.csdn.net/20170511214114229?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
 6,加密解密三部曲
    1.创建cipher对象
    2.初始化cipher对象,设置模式(加密还是解密),秘钥 key
    3.进行加密或解密操作cipher.doFind() 
    7.CBC模式下需要添加参数
    算法/工作模式/填充模式
    ![徐大大的图片](https://img-blog.csdn.net/20170511214137605?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

三.非对称加密

1.RSA
2.创建一个类RsaDemo-------Java工程
    从主函数进入
3,Rsa三个 模式
    ![这里写图片描述](https://img-blog.csdn.net/20170511214228449?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4.三部曲
    1.创建cipher对象 
    ![这里写图片描述](https://img-blog.csdn.net/20170511214254621?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 
    2.生成公钥和私钥,首先拿到秘钥生成器
    ![这里写图片描述](https://img-blog.csdn.net/20170511214314394?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    3.初始化cipher对象,设置模式-------私钥加密
    ![这里写图片描述](https://img-blog.csdn.net/20170511214334957?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    4.打印输出------用Base64进行包装一下,防止出现乱码
    ![这里写图片描述](https://img-blog.csdn.net/20170511214411286?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    5.公钥解密
    ![这里写图片描述](https://img-blog.csdn.net/20170511214421732?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
5.Rsa加密特点
    1.Rsa加密每次加密长度不能超过117字节,即不能等于或大于118字节;
    2.解决方案:分段加密  每次只加密117个字节;
    3.一个中文在 utf-8编码中占3个字节,在gbk编码中占2个字节;
    4.Rsa每次解密不能超过128个字节;
    5.解决方案,分段解密
        解密的时候,创建一个偏移量即int offset =128; 
        创建一个临时数组,一个字节数组输出流,将cipher对象doFinal得到的数据储存,并写进一个输出流;
        分别判断一下是不是完整块

四.消息摘要

一.md5
    1.初始化消息摘要对象
        MessageDigest md5 = MessageDigest.getInstance(“MD5”);
    2.消息摘要加密结果一般用16进制显示
    3.消息摘要中 16 ---32 ---128 各代表什么意思?
            16:代表md5加密后长度16个字节
            32:加密后的结果转成16进制的字符串长度是32;
            128:MD5加密后的字节所占的位数 16字节 X 8位 = 128位

二.SHA
    1.sha值结果一般都是20个字节(160个比特位),转成16进制后,长度是40个字符;

五.数字签名

1.签名用私钥,校验用公钥
2.数字签名就是 : 消息摘要 + 非对称加密
3.使用步骤
    1.创建数字签名对象
    2.拿到公钥和私钥
    3.用私钥初始化签名
    4.开始签名,得到签名后的数组
    5.用Base64包装后打印输出
        Sign 签名  Verify 校验
4.数字签名具体代码
    ![这里写图片描述](https://img-blog.csdn.net/20170511214515599?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
5.数字签名分析图
    ![这里写图片描述](https://img-blog.csdn.net/20170511214529193?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
6.学会命令行生成keystore,导出证书

六.Https编程

1.介绍
2.https受信任管理器
    ![这里写图片描述](https://img-blog.csdn.net/20170511214600202?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZVh1ZGFkYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3.没有认证的解决方案
    关联一下证书就可以,详情见代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值