首先让我们先来了解一下哈希,哈希加盐,凯撒加密的加密原理:
- 哈希 | Hash encryption(SHA256)
哈希是一种数据处理技术,它将任意长度的数据(通常称为“明文”或“输入”)通过特定的数学算法映射成固定长度的、具有唯一性的输出值,即哈希值或散列值。哈希算法具有以下主要特性:
- 单向性:哈希过程通常是不可逆的,即无法根据哈希值直接恢复出原始数据。这种特性使得哈希非常适合用于密码存储,因为即使攻击者窃取了哈希值,也无法直接得知用户的原始密码。
- 确定性:对于相同的输入数据,同一个哈希函数总能产生相同的哈希值。这意味着只要输入不变,无论何时何地重复计算,得到的哈希结果都是恒定的。
- 雪崩效应:哈希函数应具有高度敏感性,即输入数据的微小变化应导致输出哈希值的巨大差异。这种特性增强了哈希的安全性,使得攻击者难以通过相似输入推断出其哈希值。
- 碰撞阻力:理想情况下,不同的输入数据应对应不同的哈希值,且很难找到两个不同的输入产生相同哈希值(即发生碰撞)。虽然理论上随着输出空间有限,碰撞必然存在,但在实际应用中,优秀的哈希函数设计会尽量降低碰撞概率。
常见的哈希算法包括MD5、SHA-1、SHA-256等。在密码学领域,SHA-2系列(如SHA-256)因其较高的安全性和广泛接受度而被广泛使用。
- 哈希加盐 | Hash salted encryption(SHA256)
哈希加盐是一种增强密码哈希安全性的技术。在对用户密码进行哈希之前,首先添加一个唯一的随机字符串,这个字符串就是“盐”。具体步骤如下:
- 生成盐值:为每个用户账户生成一个随机且唯一的盐值。盐值通常由服务器端生成,并与哈希后的密码一同存储在数据库中。
- 拼接盐值:在实际计算哈希值前,将盐值与用户提供的原始密码进行拼接。
- 执行哈希:使用选定的哈希函数(如SHA-256)对拼接后的字符串进行哈希运算,得到带有盐的哈希值。
- 存储盐值与哈希值:将盐值与对应的哈希值一起保存在数据库中,以便后续进行密码验证。
哈希加盐的主要优点包括:
- 抵抗彩虹表攻击:攻击者可能预先计算常见密码及其哈希值并形成“彩虹表”,用于快速查找匹配的哈希值。加盐后,每个用户的密码都与独一无二的盐值结合,使得预计算的哈希表失效,大大增加了攻击成本。
- 抵御多账户共用同一密码的风险:即使多个用户使用相同的密码,由于各自的盐值不同,他们的哈希值也将完全不同,从而避免了一旦一个账户被破解,其他使用相同密码的账户也随之暴露的情况。
- 凯撒加密 | Caesars encryption
凯撒加密是一种古老的、简单的替换式加密方法,由古罗马将军朱利斯·凯撒命名。它通过将明文中每个字符按照一定的位移量向前或向后移动指定位置来进行加密。具体操作如下:
- 设定偏移量:选择一个整数作为偏移量(通常在较小范围内,如1到25),表示字母表中的移动步数。
- 字符替换:对于明文中每一个字母,将其在字母表中向前或向后移动指定的偏移量。例如,如果偏移量为3,字母“A”将被替换为“D”,字母“B”变为“E”,以此类推