安全算法(一):安全技术、加密的基础知识、哈希函数的简单介绍

安全算法(一):安全技术、加密的基础知识、哈希函数的简单介绍

通过互联网交换数据时,数据要经过各种各样的网络和设备才能传到对方那里。数据在传输过程中有可能会经过某些恶意用户的设备,从而导致内容被盗取。

因此,要想安全地使用互联网,安全技术是不可或缺的。

传输数据时的四个问题:窃听、假冒、篡改、事后否认

窃听
假冒
篡改

除了被第三者篡改外,通信故障导致的数据损坏也可能会使消息内容发生变化。

事后否认

这种情况会导致互联网上的商业交易或合同签署无法成立。这种行为便是"事后否认"。

解决这些问题的安全技术:加密、消息认证码、数字签名


问题和相应的解决方法总结:

*"数字签名"技术存在"无法确认公开密钥的制作者"这一问题。要想解决这个问题,可以使用"数字证书"技术。

密文与解密

在传输数据中,数据可能会被第三者恶意窃听。我们需要给想要保密的数据加密。加密后的数据被称为**"密文"**。

B 收到密文后,需要解除加密才能得到原本的数据。 把密文恢复为原本数据的操作就叫作**"解密"**。

计算机会用由 0 和 1 这两个数字表示的二进制来管理所有数据

对计算机来说,数据就是一串有意义的数字罗列。密文也是数字罗列,只不过它是计算机无法理解的无规律的数字罗列。 也就是说,加密就是数据经过某种运算后,变成计算机无法理解的数的过程。

加密技术的定义:将数据变成第三者的计算机无法理解的形式,然后再将其恢复成原本数据 的一系列操作就是加密技术

哈希函数

哈希函数可以把给定的数据转换成固定长度的无规律数值。转换后的无规律数值可以作为数据摘要应用于各种各样的场景。

我们可以把哈希函数想像成搅拌机,将数据输入到哈希函数后,输出固定长度的无规律数值。输出的无规律数值就是"哈希值"。哈希值虽然是数字,但多用十六进制来表示。

计算机会用由0和1这两个数字表示的二进制来管理所有的数据。虽然哈希值是用十六进制表示的, 但它也是数据,在计算机内部同样要用二进制来进行管理。也就是说,哈希函数实际上是在计算机内部进行着某种运算的。

哈希函数的特征:

1、无论输出的数据大小,哈希值长度相同。(十位)


2、如果输入的数据相同,那么输出的哈希值也必定相同**(使用同一个哈希算法)**

3、输入相似的数据并不会导致输出的哈希值也相似。

4、输入的两个数据完全不同,输出的哈希值也有可能是相同的,虽然出现这种情况的概率比较低。这种情况叫作**"哈希冲突"**。

5、输出和输入不可逆:不可能从哈希值反向推算出原本的数据。

6、求哈希值的计算相对容易


*哈希函数的算法中具有代表性的是 MD5 、SHA-1和 SHA-2 等。其中 SHA-2 是现在应用较为广泛的一个,而 MD5 和 SHA-1 存在安全隐患,不推荐使用。

(MD5: Message Digest Algorithm 5; SHA: Secure Hash Algorithm)

不同算法的计算方式也会有所不同,比如 SHA-1 需要经过数百次的加法和移位运算才能生成哈希值。

若使用的算法不同,那么就算输入的数据相同,得到的哈希值不同。

应用示例

将用户输入的密码保存到服务器时也需要用到哈希函数。

如果把密码直接保存到服务器,可能会被第三者窃听,因此需要算出密码的哈希值,并只存储哈希值。当用户输入密码时,先算出该输入密码的哈希值,再把它和服务器中的哈希值进行比对。这样一来,就算保存的哈希值暴露了,鉴于上文中提到的哈希函数的第五个特征(输入输出不可逆),第三者也无法得知原本的密码。

密码的哈希值,并只存储哈希值。当用户输入密码时,先算出该输入密码的哈希值,再把它和服务器中的哈希值进行比对。这样一来,就算保存的哈希值暴露了,鉴于上文中提到的哈希函数的第五个特征(输入输出不可逆),第三者也无法得知原本的密码。

就像这样,使用哈希函数可以更安全地实现基于密码的用户认证。

参考资料:我的第一本算法书 (石田保辉 宮崎修一)

相关推荐
派大鑫wink4 分钟前
网络安全新挑战:AI 驱动的攻防对抗与防护策略(附实战操作)
人工智能·python·安全·web安全
CCPC不拿奖不改名5 分钟前
Python基础:python语言中的文件操作+面试题目
开发语言·数据结构·人工智能·python·学习·面试·职场和发展
有一个好名字6 分钟前
力扣-最大连续1的个数III
c++·算法·leetcode
橘颂TA12 分钟前
【剑斩OFFER】算法的暴力美学——力扣 43 题:字符串相乘
数据结构·算法·leetcode·职场和发展·哈希算法·结构与算法
好奇龙猫12 分钟前
【大学院-筆記試験練習:线性代数和数据结构(4)】
学习
海边的Kurisu12 分钟前
代码随想录算法第六十四天| To Be Continued
算法
less is more_093014 分钟前
文献学习——极端高温灾害下电缆型配电网韧性提升策略研究
笔记·学习·算法
小芒果_0115 分钟前
P8662 [蓝桥杯 2018 省 AB] 全球变暖
c++·算法·蓝桥杯·信息学奥赛
菩提小狗15 分钟前
vulnhub靶场实战系列-1.靶场实战平台介绍|课程笔记|网络安全|
笔记·安全·web安全
WhoisXMLAPI16 分钟前
DNS 情报:含义及其在网络安全中的作用
网络·安全·php