从01开始 从01开始
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)

peterjxl

人生如逆旅,我亦是行人
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)
  • JavaSE

    • 我的Java学习路线
    • 安装Java
    • Java数据类型

    • Java多版本配置
    • 面向对象

    • Java核心类

    • IO

    • Java与时间

    • 异常处理

    • 哈希和加密算法

      • 什么是哈希算法
      • 第三方库的哈希算法
      • MAC算法
      • 加密算法介绍
      • 对称加密算法
      • 口令加密算法
      • 非对称加密算法介绍
        • 非对称加密算法基本加密过程
        • DH算法的诞生
        • RSA算法
        • 总结
      • RSA算法原理(一):数学知识
      • RSA算法原理(二):概述
      • RSA算法原理(三):补充知识
      • Java中的RSA算法
      • DH算法
      • 数字签名
      • SSL和TLS协议介绍
    • Java8新特性

    • 网络编程

    • Java
  • JavaSenior

  • JavaEE

  • JavaWeb

  • Spring

  • 主流框架

  • SpringMVC

  • SpringBoot

  • Java并发

  • Java源码

  • JVM

  • 韩顺平

  • Java
  • Java
  • JavaSE
  • 哈希和加密算法
2023-03-20
目录

非对称加密算法介绍

# 35.非对称加密算法介绍

使用对称加密算法,难点在于如何交换密钥;那么有没这样一种可能,加密和解密使用不同的密钥?   ‍

‍

# 非对称加密算法基本加密过程

其实,加密和解密并不一定要用同样的密钥,只需要保证能正常加解密即可!因此,我们可以用两个密钥,加密模式是这样的:

  1. 乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得。但私钥则是保密的。
  2. 甲方获取乙方的公钥,然后用它对信息进行加密。
  3. 乙方得到加密后的信息,用私钥解密。
  4. 公钥加密的信息只有私钥解得开,用公钥是不能解密的,所以即使密文泄漏了,攻击者也无法解密
  5. 只要私钥不泄漏,通信就是安全的。

​​

常见的非对称加密算法是RSA,目前应用非常广泛,可以说是目前安全领域的一个重要算法。此外DH算法则用于交换密钥,这里先简单介绍下他们的历史,后面的文章则讲解数学的一些知识,再说说加解密的原理。

‍

‍

# DH算法的诞生

1976年,两位美国计算机学家Whitfield Diffie 和 Martin Hellman,提出了一种崭新构思,可以在不直接传递密钥的情况下,完成密钥的传递。这被称为"Diffie-Hellman密钥交换算法",简称DH算法。

​图源自wiki​

‍

这个算法启发了其他科学家,人们认识到,加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。这种新的加密模式被称为"非对称加密算法"。

DH算法解决了密钥在双方不直接传递密钥的情况下完成密钥交换,这个神奇的交换原理完全由数学理论支持。更确切地说,DH算法是一个密钥协商算法,双方最终协商出一个共同的密钥,而这个密钥不会通过网络传输。

‍

# RSA算法

1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。从那时直到现在,RSA算法一直是最广为使用的"非对称加密算法"。毫不夸张地说,只要有计算机网络的地方,就有RSA算法。

​​

这种算法非常可靠,密钥越长,它就越难破解。根据已经披露的文献,目前被破解的最长RSA密钥是768个二进制位。也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。

‍

小故事:其实,早在1973年和RSA等效的算法已经被一个英国情报部门工作的数学家Clifford Cocks弄出来了,只是由于工作性质,直到1997年他的这部分工作才解密,4年后RSA三人才独立重新发明这个算法,还是Whitfield Diffie 和 Martin Hellman两个人的前期工作下(而这两人的“前期”工作也后于Clifford Cocks)。

‍

‍

# 总结

希望读者们牢记非对称加密算法基本加密过程,后续我们会讲解其底层的数学原理。关于原理的讲解可能有点多,如果读者看不懂也没关系,但非对称加密算法基本加密过程,是一定要知道的,可以不知道具体的底层数学原理,但至少要会用这个算法。

在GitHub上编辑此页 (opens new window)
上次更新: 2023/4/17 11:03:59
口令加密算法
RSA算法原理(一):数学知识

← 口令加密算法 RSA算法原理(一):数学知识→

Theme by Vdoing | Copyright © 2022-2023 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式