- 密码学教程
- 密码学 - 首页
- 密码学 - 起源
- 密码学 - 历史
- 密码学 - 原理
- 密码学 - 应用
- 密码学 - 优点与缺点
- 密码学 - 现代
- 密码学 - 传统密码
- 密码学 - 加密的需求
- 密码学 - 双重强度加密
- 密码系统
- 密码系统
- 密码系统 - 组成部分
- 密码系统攻击
- 密码系统 - 彩虹表攻击
- 密码系统 - 字典攻击
- 密码系统 - 暴力破解攻击
- 密码系统 - 密码分析技术
- 密码学类型
- 密码系统 - 类型
- 公钥加密
- 现代对称密钥加密
- 密码学哈希函数
- 密钥管理
- 密码系统 - 密钥生成
- 密码系统 - 密钥存储
- 密码系统 - 密钥分发
- 密码系统 - 密钥吊销
- 分组密码
- 密码系统 - 流密码
- 密码学 - 分组密码
- 密码学 - Feistel 分组密码
- 分组密码的工作模式
- 分组密码的工作模式
- 电子密码本 (ECB) 模式
- 密码分组链接 (CBC) 模式
- 密码反馈 (CFB) 模式
- 输出反馈 (OFB) 模式
- 计数器 (CTR) 模式
- 经典密码
- 密码学 - 反向密码
- 密码学 - 凯撒密码
- 密码学 - ROT13 算法
- 密码学 - 置换密码
- 密码学 - 加密置换密码
- 密码学 - 解密置换密码
- 密码学 - 乘法密码
- 密码学 - 仿射密码
- 密码学 - 简单替换密码
- 密码学 - 简单替换密码加密
- 密码学 - 简单替换密码解密
- 密码学 - 维吉尼亚密码
- 密码学 - 维吉尼亚密码的实现
- 现代密码
- Base64 编码与解码
- 密码学 - XOR 加密
- 替换技术
- 密码学 - 单字母替换密码
- 密码学 - 单字母替换密码的破解
- 密码学 - 多字母替换密码
- 密码学 - Playfair 密码
- 密码学 - Hill 密码
- 多字母替换密码
- 密码学 - 一次性密码本
- 一次性密码本的实现
- 密码学 - 置换技术
- 密码学 - 栅栏密码
- 密码学 - 列置换密码
- 密码学 - 密码隐写术
- 对称算法
- 密码学 - 数据加密
- 密码学 - 加密算法
- 密码学 - 数据加密标准 (DES)
- 密码学 - 三重 DES
- 密码学 - 双重 DES
- 高级加密标准 (AES)
- 密码学 - AES 结构
- 密码学 - AES 变换函数
- 密码学 - 字节替换变换
- 密码学 - 行移位变换
- 密码学 - 列混淆变换
- 密码学 - 轮密钥加变换
- 密码学 - AES 密钥扩展算法
- 密码学 - Blowfish 算法
- 密码学 - SHA 算法
- 密码学 - RC4 算法
- 密码学 - Camellia 加密算法
- 密码学 - ChaCha20 加密算法
- 密码学 - CAST5 加密算法
- 密码学 - SEED 加密算法
- 密码学 - SM4 加密算法
- IDEA - 国际数据加密算法
- 公钥(非对称)密码算法
- 密码学 - RSA 算法
- 密码学 - RSA 加密
- 密码学 - RSA 解密
- 密码学 - 创建 RSA 密钥
- 密码学 - 破解 RSA 密码
- 密码学 - ECDSA 算法
- 密码学 - DSA 算法
- 密码学 - Diffie-Hellman 算法
- 密码学中的数据完整性
- 密码学中的数据完整性
- 消息认证
- 密码学数字签名
- 公钥基础设施 (PKI)
- 哈希算法
- MD5 (消息摘要算法 5)
- SHA-1 (安全哈希算法 1)
- SHA-256 (安全哈希算法 256 位)
- SHA-512 (安全哈希算法 512 位)
- SHA-3 (安全哈希算法 3)
- 密码哈希
- Bcrypt 哈希模块
- 现代密码学
- 量子密码学
- 后量子密码学
- 密码协议
- 密码学 - SSL/TLS 协议
- 密码学 - SSH 协议
- 密码学 - IPsec 协议
- 密码学 - PGP 协议
- 图像与文件加密
- 密码学 - 图像
- 密码学 - 文件
- 密码隐写术 - 图像
- 文件加密和解密
- 密码学 - 文件加密
- 密码学 - 文件解密
- 物联网中的密码学
- 物联网安全挑战、威胁和攻击
- 物联网安全的密码技术
- 物联网设备的通信协议
- 常用密码技术
- 自定义构建密码算法(混合密码学)
- 云密码学
- 量子密码学
- 密码学中的图像隐写术
- DNA 密码学
- 密码学中的一次性密码 (OTP) 算法
- 区别
- 密码学 - MD5 与 SHA1
- 密码学 - RSA 与 DSA
- 密码学 - RSA 与 Diffie-Hellman
- 密码学与密码学
- 密码学 - 密码学与密码分析
- 密码学 - 经典与量子
- 密码学与隐写术
- 密码学与加密
- 密码学与网络安全
- 密码学 - 流密码与分组密码
- 密码学 - AES 与 DES 密码
- 密码学 - 对称与非对称
- 密码学有用资源
- 密码学 - 快速指南
- 密码学 - 讨论
密码学 - Blowfish 算法
Blowfish 加密是一种对称密钥分组密码,常用于密码哈希、VPN 和文件加密。自 1993 年推出以来,由于其高效的加密和解密操作,这种加密方法获得了普及。但是,最近出现更安全、更先进的算法,例如 AES,正在逐渐取代 Blowfish。
Blowfish 是一种 64 位分组密码,使用对称加密和密钥长度最长可达 448 位。它由 Bruce Schneier 于 1993 年创建,旨在取代过时的 DES(数据加密标准)和 IDEA(国际数据加密算法)加密方法。
虽然其普及度最近有所下降,但 Blowfish 以其易用性和效率而闻名。它正在被更新、更强大的加密方法(如高级加密标准 (AES))所取代。
Blowfish 的特点
Blowfish 算法的一些主要特点如下:
- 分组密码 - Blowfish 使用对称密钥的分组密码技术加密数据,产生 64 位的分组加密。
- 对称密钥算法 - Blowfish 使用相同的对称加密密钥对数据进行加密和解密。
- 不同的密钥长度 - Blowfish 提供从 32 位到 448 位不等的密钥长度。密钥越长,数据越安全。但是,处理更长的密钥通常需要更多资源和时间。
- Feistel 密码 - Feistel 密码结构将明文分成两半,并使用一系列数学运算独立地对每一半进行混淆。
Blowfish 的工作原理
Blowfish 使用 SP 网络;必须先初始化替换盒 (S-box) 和置换盒 (P-box)。有四个 32 位 S-盒,每个有 256 个条目,以及八个 32 位子密钥的 P 数组。
- 步骤 1 - 首先,我们将 64 位明文分成两个相等的块 L 和 R,每个包含 32 位。
- 步骤 2 - 我们在接下来的步骤中开始的 16 个加密循环中的每一个都执行以下操作:
- 现在,将 L 与 P 数组的第一个成员 (P1) 进行异或运算。
- 然后将 R 与 F 进行异或运算,其中 F 是 L 的函数,并使用构成 S-盒的四个块。以下是 F 函数的完整总结。
- L 和 R 交换后,循环的下一个迭代开始。
- 步骤 3 - 循环完成后,再次交换 L 和 R。
- 步骤 4 - 将 R 与 P17 进行异或运算,将 L 与 P18 进行异或运算,以获得最终两个未使用的 P-盒条目 (P17 & P18)。
- 步骤 5:最后一步将 L 和 R 组合起来得到密文。
Blowfish 加密
Blowfish 是一种对称密钥分组密码,它使用相同的密钥对数据进行加密和解密。Blowfish 速度快、效率高,主要是因为它比其他密码方法更简单。虽然在达到最高级别的数据安全方面存在一些可能的风险,但这些风险不容忽视。
以下是 Blowfish 加密技术的详细描述:
- 密钥扩展 - Blowfish 使用的初始组件是秘密密钥,其长度可以在 32 位到 448 位之间。然后使用 P 数组和 S-盒预计算生成并扩展加密密钥以生成多个子密钥。
- 子密钥生成 - 定义扩展密钥的 64 位块被分成两个 32 位块。这些组件与一些预定值结合起来,创建一组新的子密钥。
- 数据加密 - 这就是令人兴奋的部分开始的地方。这两个 32 位段被加密十六次。每一轮都涉及一组复杂的置换和替换(异或运算、加法和 S-盒查找)。
- 处理后 - 经过 16 轮后,重建 32 位乱序位以形成 64 位密文块。
Blowfish 解密
在 Blowfish 中,解密是通过反转加密过程来执行的。因此,所有内容都会反转,直到密文转换回明文。
这种 Blowfish 加密方法使用您的私钥来保护您的数据。Blowfish 最好的一点是,如果材料被加密,如果没有原始密钥,则很难解密它。但是,这些 90 年代的技术正在逐渐过时,因为更复杂、更安全的加密方法,如 AES 或 Twofish(Blowfish 的替代品),正在取代它们。
示例
假设将单词“Hi world”使用 Blowfish 加密。所涉及的步骤如下:
- 输入“Hi world”最初由 64 位或 8 个字节组成,包括七个字母和一个空格。
- 输入由 32 位组成。“Hi w”的左 32 位与 P1 进行异或运算以产生 P1,即密钥扩展的结果。
- 之后,P1 将 32 位分成 4 个字节,并使用转换函数 F(F In)将它们发送到四个 S-盒中的每一个。
- 第三个 S-盒中的第三个值与前两个 S-盒中的前两个值的总和进行异或运算。
- 将此结果添加到第四个 S-盒的输出时,会产生 32 位输出。
- 为了创建输出 F1',将 F In 的输出与输入消息“orld”的正确 32 位进行异或运算。
- 然后用 F1' 替换消息的左半部分,用 P1' 替换右半部分。
- 对于总共 16 轮,将对每个后续的 P-数组成员执行相同的过程。
- 16 轮后,将最终两个 P-数组元素 P17 和 P18 与输出 P16' 和 F16' 进行异或运算。之后,再次将它们组合起来创建输入消息的 64 位密文。
Blowfish 的优点
Blowfish 是当前使用的最快分组密码之一。它使用对称加密密钥对数据进行加密以创建密文。Blowfish 在创建三十多年后仍然需求量很大,因为它提供了以下好处:
- 比DES和IDEA算法更省时有效。
- 无需授权,任何人都可以免费使用。
- 大型微处理器即使在加密前的复杂初始化步骤下,也能高效地处理数据加密过程。
- 为用Java开发的程序和应用提供高水平的安全保障。
- 允许安全的用户身份验证以进行远程访问,并为备份工具提供安全访问。
Blowfish的缺点
使用Blowfish加密有一些缺点,包括:
- 更改密钥会改变速度。
- 完成主要例程需要很长时间。
- 由于其64位短块大小,该技术容易受到生日攻击(一种蛮力攻击)的影响。
- 每个新密钥的预处理需要4 KB的文本,这会降低其速度,并使其无法用于各种用途。