• [面试直通版]网络协议面试核心之HTTP,HTTPS,DNS-安全传输的基础


    点击->计算机网络复习的文章集<-点击

    目录

    典型问题:

    古典密码学

    历史

    加密方法

    基本密码

    替代密码

    置换方法

    对称加密与非对称加密

    概念了解

    面临问题-密钥分发

    对称加密

    非对称加密

    区别

    散列算法

    特点:

    MD5

    MD5算法具有以下特点:

    MD5有什么作用?

    加密和摘要,是不一样的

    加盐处理

    问题:

    解决:

    再讲下为啥会更安全


    • 典型问题:

    • 请简述对称加密、非对称加密算法的异同点
    • MD5是加密算法吗?为什么?什么是加盐处理?
    • 古典密码学

    • 历史

    • 古典密码阶段:1949年以前
    • 近代密码阶段:1949-1975年
    • 现代密码阶段:1976年至今
    • 加密方法

    • 古典密码学的加密方法主要有两大类:
    • 替代和置换,或者是两者的结合
    • 基本密码

    • 1.键盘布局加密
    • 这是一种比较简单也比较另类的密码
    • 通常都是给出一堆无意义的字符,但是将这些字符按照在键盘上的布局比划一下,就可以根据形状拼出相应字符
    • 2. 键盘坐标加密
    • 利用键盘上面的字母行和数字行来加密,具体又有两种方法:
    • 方法1:以字母行所在的行号作为横坐标,以数字所对应的列作为纵坐标
    • 例如明文“bye”加密后的密文是:35 16 13
    • 方法2:以数字所对应的列作为横坐标,以字母行所在的行号作为纵坐标
    • 明文"bye"加密后的密文是:53 61 31
    • 替代密码

    • 替代密码是指先建立一个替换表,加密时将需要加密的明文依次通过查表,替换为相应的字符
    • 明文字符被逐个替换后,生成无任何意义的字符串,即密文
    • 在替代密码中,每个字母或每一组字母被另一个字母或另一组字母所取代
    • 替代密码保留了明文符号的顺序,但是将明文伪装起来
    • 置换方法

    • 把明文中的字母重新排列,字母本身不变,但其位置改变了,这样编成的密码称为置换密码
    • 如倒序加密
    • 对称加密与非对称加密

    • 概念了解

    • 密钥它是在明文转换为密文或将密文转换为明文的算法中输入的参数
    • 密钥分为对称密钥与非对称密钥
    • 私钥自己使用,不对外公开
    • 公钥给大家使用,对外公开
    • 面临问题-密钥分发

    • 在加密算法之外,面临一个问题,那就是:密钥的分发
    • 就是说,解密方如何获得加密方的密钥呢?
    • 从而出现了:对称加密和非对称加密
    • 对称加密

    • 也叫私钥加密
    • 加密和解密使用同一个密钥
    • 对称加密只有一个密钥,作为私钥
    • 常见的对称加密算法:DES,AES,3DES等等
    • 非对称加密

    • 加密和解密使用不同的密钥
    • 一把作为公开的公钥,另一把作为私钥
    • 公钥加密的信息,只有私钥才能解密
    • 私钥加密的信息,只有公钥才能解密
    • 常见的非对称加密算法:RSA,ECC
    • 区别

    • 对称加密算法相比非对称加密算法来说,加解密的效率要高得多
    • 但是缺陷在于对于秘钥的管理上更加复杂
    • 以及在非安全信道中通讯时,密钥交换的安全性不能保障
    • 所以在实际的网络环境中,会将两者混合使用
    • 散列算法

    • 也叫摘要算法
    • 特点:

    • 1.无论输入的消息有多长,计算出来的消息摘要的长度总是固定的
    • 2.消息摘要看起来是“随机的”,这些比特看上去是胡乱的杂凑在一起的
    • 3.一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同;但相同的输入必会产生相同的输出
    • 4.消息摘要函数是无陷门的单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,甚至根本就找不到任何与原信息相关的信息
    • 5.好的摘要算法,无法找到两条消息,使它们的摘要相同
    • MD5

    • MD5即Message-Digest Algorithm 5(信息-摘要算法5)
    • 用于确保信息传输完整一致
    • 是计算机广泛使用的杂凑算法(又译摘要算法、哈希算法)之一
    • MD5算法具有以下特点:

    • 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的
    • 2、容易计算:从原数据计算出MD5值很容易
    • 3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别
    • 4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的
    • MD5有什么作用?

    • 作用一:数字签名
    • MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”
    • 举个例子,将这段话“md5是什么,md5的这些用途你都知道吗”写在一个叫 read.txt文件中,并对这个read.txt产生一个MD5的值(密文:7a1189ca1650ef630a6c2b0206f42d8b)并记录在案
    • 然后我可以传播这个文件给别人,别人如果修改了文件中的任何内容,那么我对这个文件重新计算MD5时就会发现(两个MD5值不相同)
    • 作用二:一致性验证
    • MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改
    • MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要
    • 作用三:安全访问认证
    • 加密和摘要,是不一样的

    • 加密后的消息是完整的;具有解密算法,可得到原始数据;
    • 摘要得到的消息是不完整的;通过摘要的数据,不能得到原始数据
    • 所以MD5不是加密算法
    • 加盐处理

    • 问题:

    • 一般对密码都不会是明文存储,而是对密码进行MD5处理,增强反向解密难度
    • 但这样还是能可以找出破绽,因为MD5加密相同的数据,得到的密文是一样的
    • 如果用户可以查看数据库,那么他可以观察到自己的密码和别人的密码加密后的结果都是一样,那么,就会知道别人用的和自己就是同一个密码
    • 解决:

    • 对于这个问题其实只要稍微混淆一下就能防范住了
    • 这在加密术语中称为“加盐”
    • 具体来说就是在原有材料(用户自定义密码)中加入其它成分(一般是用户自有且不变的因素),以此来增加系统复杂度
    • 当这种盐和用户密码相结合后,再通过摘要处理,就能得到隐蔽性更强的摘要值
    • 再讲下为啥会更安全

    • 密码加盐里包含随机值和加密方式
    • 随机值是随机产生的,并且以随机的方式混在原始密码里面,然后按照加密方式生成一串字符串保存在服务器
    • 换言之,这个是单向的
    • 电脑也不知道客户的原始密码,即使知道加密方式,反向推出的加密前的字符串也是真正密码与随机值混合后的结果,从而无法解析用户的真正密码
    • 那么是如何验证密码的呢?当你再次输入密码,会以相同的加盐方式生成字符串,如果和之前的一致,则通过
    • 而其它用户无法获得这种加密方式:即生成哪些随机数,以什么方式混入进去,自然就很安全
  • 相关阅读:
    鸿蒙自定义DrawerLayout侧滑菜单实现原理
    存储优化知识复习一详细版解析
    1951-2011年长序列高时空分辨率月尺度温度和降水数据集
    音频裁剪软件有哪些?来看看这几个实用软件
    为解决bypy大文件上传报错—获取百度云文件直链并使用Aria2上传文件至服务器
    MySql分库分表
    使用Avalonia UI 的 MVVM 框架在ViewModel里使用ShowDialog报错
    【第25例】IPD体系进阶:需求分析团队RAT
    小白大白读论文-关于EfficientNetV2论文的 疑问 与 总结
    RK3568-UART通信
  • 原文地址:https://blog.csdn.net/weixin_59624686/article/details/127659143