• 密码学基础——加密与哈希,凯撒密码,对称加密与非对称加密以及Diffie-Hellman密码交换协议


    0、加密与哈希

    哈希函数的特点:不可逆长度固定值唯一
    哈希函数 h 将一条信息 P 映射到一个固定长度的值 x = h(P),称为 P 的散列值或摘要。它保证了 x 的完整性。
    也就是说哈希的输入可以任意长度,但输出是固定长度。比如SHA256 哈希函数,输入任何值出来的都是256比特的0和1。
    加密与哈希最直观的区别就是加密是可逆的,而哈希是不可逆的。
    在这里插入图片描述

    1、凯撒密码 Caesar Cipher

    凯撒密码通过修改字母的偏移量进行通信,比如所有字母左移5位形成一个新的字母映射关系。
    在这里插入图片描述

    2、对称加密

    加密和解密使用相同的密钥
    在这里插入图片描述
    对称加密示例
    假设我们现在有一段文本 10001100101需要加密,我们使用异或运算符(XOR)进行加密,给定的KEY 为 10101010101 。那么加密过程如下
    Message: 10001100101
Key: 10101010101
Secret Msg: 00100110000

    同样的,将上述加密后的信息与key进行异或运算后即可解码。

    3、非对称加密

    加密和解密使用不同的密钥;
    同时每个用户都有一对密钥:分别是私钥和公钥。
    发送者用接收者的公钥加密传输时,接受者则使用他的私钥进行解密;当发送者使用私钥进行加密传输时,接受者则使用发送方的公钥进行解密。如下图所示。

    在这里插入图片描述
    一个更直观的图如下所示。
    使用公钥进行加密。Bob想给Alice发消息,便从他的公钥环中取出Alice的公钥,使用公钥将信息加密后发给Alice,Alice接受到消息后,则用自己的私钥将信息解密即可。
    在这里插入图片描述
    使用私钥进行加密。Bob想给Alice发消息使用私钥将信息加密后发给Alice,Alice接受到消息后,则从自己的公钥环中取出Bob的私钥解密即可。
    Bob想给Alice发消息,便从他的公钥环中取出Alice的公钥,使用公钥将信息加密后发给Alice,Alice接受到消息后,则用自己的私钥将信息解密即可。

    一个具体的例子如下
    在这里插入图片描述

    3.1 非对称加密技术的应用:数字签名

    基于非对称加密技术,数字签名是其最普遍的应用场景。它保证了发送消息的完整性、源认证和不可否认性。
    在这里插入图片描述

    4、Diffie-Hellman 密钥交换协议

    对称加密技术术需要在每对通信放之间共享密钥,所有这些密码是如何做到共享的呢,也就是用同一个密钥去加密和解密信息。于是就有了我们现在要讲的Diffie-Hellman协议

    其目的是使两个用户能够安全地交换一个密钥,然后可以
    用于后续消息的对称加密
    • 算法本身仅限于秘密值的交换
    • 其有效性取决于计算离散对数的难度。
    在这里插入图片描述
    我们看下算法的原理。首页Alice(以下简称A)和Bob(以下简称B)共同选定一个质数q,以及质数的源根α。
    之后 A 选择一个自然数 Xa,计算出 Ya,其中Xa 保密,Ya 公开。
    在这里插入图片描述

    同理,B 选择 Xb 并计算出 Yb,其中 Xb 保密,Yb 公开。之后 A 用 Yb 和 Xa 计算出密钥 K,而 B 用 Ya 和 Xb 计算密钥 K。

    完整流程如下:
    在这里插入图片描述

  • 相关阅读:
    vim操作教程,看这一篇绝对足够啦~
    微服务和Spring Cloud Alibaba介绍
    数据结构--》解锁数据结构中树与二叉树的奥秘(二)
    智云通CRM:如何提前识别哪些客户爱说“不”?
    C- strtok() & strtok_r()
    【算法刷题day37】Leetcode:738. 单调递增的数字、968. 监控二叉树
    mysql 表的操作以及字段的操作总结
    41-数组 _ 数组作为函数参数
    Linux安装进程树状图显示工具pstree
    排序算法(3)--堆排序与直接选择排序
  • 原文地址:https://blog.csdn.net/Demonslzh/article/details/127638582