• 密码学系列——简介密码学


    前言

    整理密码学。

    我们在编程中常常需要密码问题,比如说https,aes等。他们都用到了密码这个概念。

    密码学是网络安全、信息安全、区块链等产品的基础,常见的非对称加密、对称加密、散列函数等,都属于密码学范畴。

    正文

    从古至今密码学一直存在,那么在古代密码是怎么样的呢?

    我们常常在电视剧中看到一张纸舔一舔然后显示出字了,或者用火然后烤一烤然后出现一些图案。

    这些也属于密码学。当然这样是不够的,古人的思想不止于此,他们通过其他方法把文字加密了。

    ① 替换法
    替换法很好理解,就是用固定的信息将原文替换成无法直接阅读的密文信息。例如将 b 替换成 w ,e 替换成p ,这样bee 单词就变换成了wpp,不知道替换规则的人就无法阅读出原文的含义。

    替换法有单表替换和多表替换两种形式。单表替换即只有一张原文密文对照表单,发送者和接收者用这张表单来加密解密。在上述例子中,表单即为:a b c d e - s w t r p 。

    多表替换即有多张原文密文对照表单,不同字母可以用不同表单的内容替换。

    例如约定好表单为:表单 1:abcde-swtrp 、表单2:abcde-chfhk 、表单 3:abcde-jftou。

    当然这会使得设计变得困难。

    ② 移位法
    移位法就是将原文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后得出密文,典型的移位法应用有 “ 恺撒密码 ”。
    例如约定好向后移动2位(abcde - cdefg),这样 bee 单词就变换成了dgg 。

    上面的称作古典密码学。

    本来古典密码学好好的,然后概率论发生了,这个时候密码就变得非常容易破解。

    百度百科讲解一下如何破解的。

    频率分析基于如下原理:在任何一种书面语言中,不同的字母或字母组合出现的频率各不相同。
    而且,对于以这种语言书写的任意一段文本,都具有大致相同的特征字母分布。
    比如,在英语中,字母E出现的频率很高,而X则出现得较少。类似地,ST、NG、TH,以及QU等双字母组合出现的频率非常高,NZ、QJ组合则极少。英语中出现频率最高的12个字母可以简记为“ETAOIN SHRDLU”。
    

    比如说采用替换法,我发现出现很多个Z。但是按理说E应该最多,那么我尝试把Z换成X,这样破解的概率大大增加。

    那么现代密码加密方式是啥?

    ① 散列函数
    散列函数,也见杂凑函数、摘要函数或哈希函数,可将任意长度的消息经过运算,变成固定长度数值,常见的有MD5、SHA-1、SHA256,多应用在文件校验,数字签名中。
    MD5 可以将任意长度的原文生成一个128位(16字节)的哈希值
    SHA-1可以将任意长度的原文生成一个160位(20字节)的哈希值

    ② 对称密码
    对称密码应用了相同的加密密钥和解密密钥。对称密码分为:序列密码(流密码),分组密码(块密码)两种。流密码是对信息流中的每一个元素(一个字母或一个比特)作为基本的处理单元进行加密,块密码是先对信息流分块,再对每一块分别加密。

    ③ 非对称密码
    对称密码的密钥安全极其重要,加密者和解密者需要提前协商密钥,并各自确保密钥的安全性,一但密钥泄露,即使算法是安全的也无法保障原文信息的私密性。

    散列函数和非对称密码一般用于文件校验和身份验证,而对称用于数据传输加密。

    主要是因为非对称密码加密解密消耗时间。

  • 相关阅读:
    Unity c# 状态机的简单入门
    python实战教程之自动扫雷(自己存下来学习之用)
    Kubernetes的三种外部访问方式:NodePort、LoadBalancer和Ingress-十一(1)
    Ubuntu安装eclipse以及创建快捷方式
    Dockerfile-HEALTHCHECK指令
    各个版本Microsoft Visual C++运行库下载
    docker 远程连接设置
    centos7安装redis3.2.12
    Windows下允许redis远程访问
    UltraISO制作U盘启动盘-centos7
  • 原文地址:https://www.cnblogs.com/aoximin/p/13384625.html
Copyright © 2020-2023  润新知