cifrado_bloque

ECB(电子密码本模式,Electronic Codebook)是加密数据的一种方法(或者叫“模式”)。

简单来说,它是最简单、最偷懒,但也最不安全的加密方式。

它是怎么工作的?

ECB就像是“一对一翻译”。它把你要加密的大段文字,切成一样大的一块一块(比如每块8个字),然后用相同的密码,把每一块单独加密。

为什么它不安全?

因为相同的明文,加密后会得到相同的密文

举个例子:
如果你的信里写了多次“借钱”这两个字,用ECB加密后,虽然“借钱”变成了看不懂的乱码(比如“**X&7#”),但每次出现“借钱”的地方,密文全都是“X&7#**”。

黑客虽然不知道“X&7#”是什么意思,但通过看规律,就能猜出你的数据结构,甚至把密码破解出来。

最著名的“企鹅实验”

密码学界有一个经典的例子:用ECB加密一张Linux企鹅的图片。

  • 加密前:是一只可爱的企鹅。
  • 用ECB加密后:虽然看不见企鹅的细节了,但因为相同颜色的地方加密后还是一样,整张图依然能清晰地看出企鹅的轮廓!这等于没加密。

总结

ECB就像是用同一种模具做出来的饼干,太有规律了。所以,在现代密码学中,ECB是绝对禁止使用的

现在大家用的是更高级的模式(比如 CBCGCM),它们会让同样的文字每次加密出来的结果都不一样,这样黑客就完全找不到规律了。

CBC(密码块链接模式,Cipher Block Chaining)是比ECB更安全、也更常用的一种加密方法。

如果说ECB是“各顾各的”,那么CBC就是“手拉手”加密

它是怎么工作的?

CBC的核心思想是:加入“随机干扰”,并且让前后数据产生关联。

  1. 第一步加点“盐”:在加密第一块数据前,先混入一个随机数(叫做 IV,初始化向量)。这样,即使每次加密相同的内容,结果也完全不同。
  2. 手拉手链接:第二块数据在加密前,必须先和第一块加密后的结果“混在一起”再加密;第三块又和第二块混在一起……以此类推,像一根链条一样扣在一起。

为什么它比ECB安全得多?

因为没有规律了

还是用企鹅图片的例子:

  • ECB 加密:能看出企鹅的轮廓。
  • CBC 加密:会变成一堆完全杂乱无章的雪花点,什么都看不出来。

就算你的文件里有100个重复的“借钱”,在CBC模式下,加密出来的100个密文也完全不一样,黑客根本找不到任何规律。

CBC有什么缺点吗?

  1. 不能同时算(速度慢一点):因为每一块加密都必须等前一块算完(因为要“手拉手”),所以电脑没办法多管齐下(并发处理)一起算。
  2. 怕被篡改:如果黑客在传输过程中故意破坏了其中一小段密文,解密时就会像多米诺骨牌一样,后面一大片都会乱套。

总结

  • CBC 比 ECB 安全得多,它消除了规律。
  • 虽然它很传统且安全,但在今天,人们更喜欢用一种叫 GCM 的新模式,因为GCM不仅安全、速度快,还能顺便检查数据有没有被黑客偷偷修改过。
    CFB(密文反馈模式,Cipher Feedback)是另一种加密方法。

简单来说,CFB 的绝招是:把“大块头”的加密法,变成了“流式”加密(来一个字,就加密一个字)。


为什么需要 CFB?

像以前的 ECB 和 CBC,都有一个臭脾气:它们必须凑满固定的大小(比如16个字节)才能开始加密。如果你的数据太短(比如你只发了一个字母“A”),它们就必须在后面填满一堆无用的废话(填充,Padding),凑够数了才加密。

CFB 不需要等。它像自来水一样,来一个字符,就立刻加密发送一个字符。

它是怎么工作的?

它的原理有点像“特务发电报”

  1. 电脑先自己生成一串随机的“密码本”。
  2. 来一个明文字符(比如“H”),就和密码本里的第一个密码做混合,生成密文(比如“X”)。
  3. 接着,把刚刚生成的密文“X”反馈回去,用来生成下一个密码本。
  4. 下一个字符(比如“P”)再和新的密码本混合……以此类推。

因为每一次的密码本都加入了前一次的密文,所以同样没有规律,非常安全。

CFB 的优缺点

  • 优点
    • 不用等待、不用填充:数据来多少就加多少,特别适合网络聊天、实时语音这种需要“即时传送”的场景。
  • 缺点
    • 速度不够快:和 CBC 一样,它也要等前一个算完才能算下一个,无法让电脑里的多核 CPU 协同加速。
    • 错误会传播:如果传输中有一个字母传错了,后面连带着好几个字母都会解密失败。

总结

  • ECB:不及格(有规律,不安全)。
  • CBC:很安全,但必须攒够一堆数据再加密。
  • CFB:很安全,而且来一个字就能加密一个字,适合实时通信。

OFB(输出反馈模式,Output Feedback)是 CFB 的“亲兄弟”。

它也是一种“来一个字,就加密一个字”的流式加密。但它做了一点好玩的改变,解决了 CFB 的一个大毛病。

如果说 CFB 是“把写好的密文反馈回去”,那么 OFB 就是“把内部生成的密码反馈回去”


它是怎么工作的?

你可以把 OFB 想象成一个“密码生成器”

  1. 机器自己玩:加密机器自己用算法不断产生一串串随机的密码(称为“密钥流”),这个过程完全不看你的明文是什么,也不看加密后的密文是什么。它自己跟自己反馈,就像复印机自己复印自己一样,源源不断地吐出硬核密码。
  2. 拿来就用:当你有明文要加密时(比如“H”),机器直接把刚吐出来的第一个密码和“H”拼在一起,就变成了密文。

OFB 的绝招:不怕“传染”

还记得 CFB (以及 CBC) 的大缺点吗?“一人犯错,全家遭殃”。如果网络不好,中间丢了一个字母,后面一大片都会解密失败。

OFB 完美解决了这个问题

  • 因为它的密码(密钥流)是机器自己独立产生的,跟传输的密文无关。
  • 哪怕中间某个密文在路上被雷劈坏了(比如“X”变成了“Y”),解密的时候,也只有这一个字会出错,后面的字依然能完好无损地解密出来。

它的缺点

  1. 绝对不能重复:OFB 最怕“用同一个密码本加密两封信”。如果不小心重复使用了,黑客只要把两份密文放在一起一减,就能直接把明文看光。
  2. 容易被黑客偷偷篡改:因为每个字都是独立加密的,黑客如果偷偷把密文里的某一位改了,解密端无法自动发现,可能导致数据被篡改了都没人知道。

四兄弟大总结:

  • ECB:最简单,但有规律、不安全
  • CBC:安全,但必须等数据攒够一整块才加密。
  • CFB:安全,来一个字加一个字,但传输错一个会连累后面。
  • OFB:安全,来一个字加一个字,而且传输错一个不影响后面,但极怕重复使用。

CTR(计数器模式,Counter Mode)是现代密码学中的“明星选手”性能怪兽

如果说前面的 CBC、CFB、OFB 是普通青年,那么 CTR 就是那个能“多管齐下”的学霸。目前最主流的加密方式(比如你上网用的 HTTPS),背后绝大多数都在用 CTR 的升级版。


它是怎么工作的?

它的原理超级简单:

  1. 数数(计数器):机器先设定一个起点数字(比如 1),然后开始数数:1, 2, 3, 4, 5...
  2. 加工成密码:把这些数字扔进加密引擎里,变成一串串毫无规律的密码。
  3. 直接套用
    • 第一块数据,加上 数字1变出来的密码
    • 第二块数据,加上 数字2变出来的密码
    • 第三块数据,加上 数字3变出来的密码

为什么 CTR 这么强?(核心优势)

1. 速度快到飞起(支持“多核并发”)

以前的 CBC、CFB 都要“手拉手”,必须等前一个算完,后一个才能开始,电脑里有8个CPU核心也只能闲着排队。
CTR 互不相干

  • 1号CPU算 数字1,2号CPU算 数字2,大家一起开工!
  • 它的速度是以前那些模式的数倍甚至数十倍,完美适配现代的多核电脑和手机。

2. 来去自如(支持“随机读取”)

如果你想解密一部2GB电影中间的第50分钟:

  • CBC 模式:你必须把电影前50分钟的数据全部解密完,才能看第50分钟。
  • CTR 模式:你直接算一下第50分钟对应的“数字是多少”,直接定位解密,不需要理会前面的内容。

3. 错不传染

和 OFB 一样,路上坏了一个字,就只坏这一个字,不会影响后面的数据


缺点

  • 绝不能重复(和 OFB 一样):计数器的数字绝对不能重复使用。如果对两封信用了相同的计数器序列,加密就形同虚设,黑客能轻易破解。

五大模式大结局(一句话终极对比)

模式 速度 安全性 特点 相当于…
ECB 极快 极低 有规律,等于没加密 裸奔
CBC 链条式,传统安全 手拉手排队
CFB/OFB 来一个字加一个字 细水长流
CTR 极快 极高 独立计数,高并发,现代主流 多核多线程大卡车

如果说前面介绍的 CBC、CTR 是基础引擎,那么 GCMXTS 就是专门为了特定场景定制的“超跑”

它们不仅能加密,还解决了现代安全领域的两个终极问题:“如何防篡改”(GCM)和“如何给硬盘加密”(XTS)。


1. AES-GCM:现代互联网的绝对霸主 👑

(你现在访问这个网页、手机刷微信,90% 都在用 GCM)

  • 名字拆解:GCM = CTR(计数器模式)+ GMAC(身份验证码)。
  • 它解决了什么痛点?
    以前的加密(比如前面的 CTR),只能保证“不被偷看”,但不能保证“不被恶意篡改”
    • 比方说: 银行转账信息“转账 100 元”。黑客看不懂密文,但他坏心眼地把密文里的某一个数字改了。结果解密出来变成了“转账 900 元”。这就是“能保密,但防不住捣乱”。
  • GCM 的绝招:加密 + 盖章认证。
    GCM 在用 CTR 快速加密的同时,顺便用算法算出一个“防伪哈希值”(Tag),就像在信封上盖了一个一次性火漆印章
    如果有人在路上偷偷改了哪怕一个比特的数据,接收方一对比“印章”,就会发现:“不信!有人动过!”然后直接丢弃。
  • 总结又快、又安全、还能防篡改。它是目前网络传输(HTTPS、Wi-Fi 安全)的绝对第一选择。

2. AES-XTS:专为“硬盘加密”而生的特工 💾

(你的 iPhone 锁屏加密、电脑 BitLocker、U盘加密,都在用它)

  • 它解决了什么痛点?
    给硬盘、手机存储加密非常痛苦。因为硬盘的物理结构是分成一个个固定大小的“扇区”(每个扇区 512 字节或 4096 字节)。
    • 如果用 GCM:密文会因为多了那个“防伪印章(Tag)”而变长,原本大小刚刚好的硬盘扇区放不下了!
    • 如果用别的:黑客把你的固态硬盘拆下来,即使解不开密码,但他能看出来哪些扇区是经常变动的,从而推测出你的操作系统装在哪里。
  • XTS 的绝招:地址绑定。
    XTS 加密时,把数据的“物理位置(扇区编号)”作为密码的一部分算进去
    • 这样做的效果是:即使你在硬盘的“A扇区”和“B扇区”写下完全一模一样的“12345”,加密出来的密文也是完全不同的。
    • 而且,它的密文长度和明文一模一样,不需要多余的空间,完美契合硬盘的物理格子。
  • 总结专治硬盘加密,不浪费一点空间,且防物理拆机分析。

极其简单的选择指南:

  1. 要让网页传输、网络通信安全?
    👉 选 GCM(因为网络传输最怕数据被黑客中间篡改)。
  2. 要给手机、电脑硬盘、U盘加密?
    👉 选 XTS(因为硬盘空间是一个个格子固定的,不能变大)。

cifrado_bloque
http://1eqw.com/2026/05/24/cifrado-bloque/
作者
OneWhiteThree
发布于
2026年5月24日
许可协议