基础算法

简介: 加密算法主要包括对称加密(如AES、SM4)、非对称加密(如RSA、SM2)和哈希摘要(如SHA-2、SM3),分别用于数据加密、安全传输和完整性校验。对称加密使用同一密钥加解密,速度快;非对称加密使用公钥加密、私钥解密,安全性更高;哈希摘要用于生成数据唯一特征,确保数据完整性。

加密算法

1.1【问】请介绍一下你知道的加密算法

参考回答:

一般分类如下

  1. 对称加密
  2. 非对称加密
  3. 哈希摘要
  4. 电子签名
  5. 密码存储

其中

  • 对称加密常见的有:DES、AES 等,国家标准有 SM4
  • 非对称加密常见的有:RSA,ECDSA 等,国家标准有 SM2
  • 哈希摘要有:MD5、SHA-2、SHA-3 等,国家标准有 SM3
  • 电子签名有:通常会结合 RSA、ECDSA 和哈希摘要完成签名,或者是 HMAC
  • 密码存储:直接使用哈希摘要作为密码存储、加盐存储、BCrypt


1.2【追问】解释对称加密、非对称加密、哈希摘要

  • 对称加密
  • 加密和解密的密钥使用同一个
  • 因为密钥只有一个,所以密钥需要妥善保管
  • 加解密速度快
  • 非对称加密
  • 密钥分成公钥、私钥,其中公钥用来加密、私钥用来解密
  • 只需将私钥妥善保管,公钥可以对外公开
  • 如果是双向通信保证传输数据安全,需要双方各产生一对密钥
  • A 把 A公钥 给 B,B 把 B公钥 给 A,他们各自持有自己的私钥和对方的公钥
  • A 要发消息给 B,用 B公钥 加密数据后传输,B 收到后用 B私钥 解密数据
  • 类似的 B 要发消息给 A,用 A公钥 加密数据后传输,A 收到后用 A私钥 解密数据
  • 相对对称加密、加解密速度慢
  • 哈希摘要,摘要就是将原始数据的特征提取出来,它能够代表原始数据,可以用作数据的完整性校验
  • 举个例子,张三对应着完整数据
  • 描述张三时,会用它的特征来描述:他名叫张三、男性、30多岁、秃顶、从事 java 开发、年薪百万,这些特征就对应着哈希摘要,以后拿到这段描述,就知道是在说张三这个人
  • 为什么说摘要能区分不同数据呢,看这段描述:还是名叫张三、男性、30多岁、秃顶、从事 java 开发、月薪八千,有一个特征不符吧,这时可以断定,此张三非彼张三


1.3【追问】解释签名算法

电子签名,主要用于防止数据被篡改

先思考一下单纯用摘要算法能否防篡改?例如

  • 发送者想把一段消息发给接收者
  • 中途 message 被坏人改成了 massage(摘要没改)
  • 但由于发送者同时发送了消息的摘要,一旦接收者验证摘要,就可以发现消息被改过了

坏人开始冒坏水

  • 但摘要算法都其实都是公开的(例如 SHA-256),坏人也能用相同的摘要算法
  • 一旦这回把摘要也一起改了发给接收者,接收者就发现不了

怎么解决?

相关文章
|
Ubuntu Java Python
ROS2通讯中间件安装与使用
本文记录主要ROS2的安装、如何JAVA和PYTHON对ROS2消息的订阅和发布。
|
安全 算法 API
产品经理必备知识——API接口
前言 在古代,我们的传输信息的方式有很多,比如写信、飞鸽传书,以及在战争中使用的烽烟,才有了著名的烽火戏诸侯,但这些方式传输信息的效率终究还是无法满足高速发展的社会需要。如今万物互联的时代,我通过一部手机就可以实现衣食住行的方方面面,比如:在家购物、远程控制家电、自动驾驶等等,背后都离不开我们今天要聊的API接口。
|
8月前
|
算法
回溯算法的基本思想
本节介绍回溯算法,通过图1中从A到K的路径查找示例,说明其与穷举法的异同。回溯算法通过“回退”机制高效试探各种路径,适用于决策、优化和枚举问题。
226 0
|
算法 安全 Java
【数据安全】常见加密算法总结
【数据安全】常见加密算法总结
3394 1
|
12月前
|
开发工具 Android开发 iOS开发
flutter 环境配置
flutter 环境配置
2457 162
|
11月前
|
存储 网络协议 数据安全/隐私保护
SMTP/POP3/IMAP(电子邮件协议)
本文介绍了电子邮件系统中常用的三种协议:SMTP、POP3 和 IMAP。SMTP(简单邮件传输协议)用于发送邮件,设计简单且广泛支持;POP3(邮局协议版本3)用于接收邮件,适合离线使用但不支持文件夹管理;IMAP(互联网消息访问协议)允许用户在服务器上管理邮件,支持多设备同步和部分下载。文章还对比了这三种协议的功能、端口及特点,并分析了它们在实际场景中的应用,帮助用户根据需求选择合适的协议。
5769 24
|
XML API 网络架构
什么是API数据接口该怎么使用?
API(Application Programming Interface,应用程序编程接口)是一种定义了规范和协议的集合,用于不同应用程序之间的数据交互和通信。API数据接口主要关注的是数据的传输格式、请求和响应消息的协议以及数据的安全性和可靠性等方面。 在现代软件开发中,API数据接口被广泛使用,因为它可以简化不同应用程序之间的数据交互过程。通过使用API数据接口,开发者可以专注于应用程序的业务逻辑和功能,而不需要花费过多的时间和精力来解决数据传输和交互的问题。
|
存储 运维 安全
|
SQL Oracle 关系型数据库
SQL如何添加字段记录:详细步骤与技巧
在数据库管理中,经常需要向已有的表中添加新的字段(列)或向表中插入新的记录
3557 5
|
存储 SQL 关系型数据库
MySQL 给查询结果增列并自定义列数据
MySQL 给查询结果增列并自定义列数据
2003 2