让我一个字一个字解开你的心。
串流密码(stream cipher)跟区块密码(block cipher)都列属於对称式加密底下,
唯一的差别是,串流密码的加密是以位元为单位,而区块密码是多个位元一次加密。
首先要来介绍一个概念,叫做XOR(他的念法是X、OR)。
XOR的符号写作⊕
简单来说,XOR的逻辑是:一样的是0(False),不一样则是1(True)。
在这里,我们所使用的数字只有0或1,
所以
0⊕0=0
1⊕0=1
0⊕1=1
1⊕1=0
以数学式来表达的话,XOR可以表示成这样:
r = p ⊕ q ⇔ r = p+q (mod2)
其中p、q 是 0或1 。
XOR在密码学中很常使用到,之後会很常出现在各大加密系统里。
那麽介绍完XOR,我们就可以来看这个用XOR为基础的,非常简单的串流加密方法,OTP。
如果你直接在Google上搜寻OTP的话,可能会出现另一个东西,叫做one time password。
那个跟我要讲的东西不一样。
我要讲的是一个名叫one time pad的加密方法。
OTP的中文是一次性密码本。
先说一个很厉害的事实,OTP是无法被破解的。
但是没有人会想用它。
假设你要加密以下的讯息
010110010110
接下来你要生成一个随机的密钥,密码的位元数至少要跟明文一样长。
101110101111
接着,把每一个明文的每一个位元一一对密钥做XOR,於是你会得到
111000111001
这样就完成了OTP加密,只要密钥没有被泄漏,并且密钥是随机的,只使用一次,
那麽OTP被证明是无法破解的。
所以你知道为什麽没有人要用了吗?
我在上一篇说到,演算法的安全性跟可行性同样重要。
OTP的缺点就在於它的密钥长度:你的明文有多长,密钥就要多长。
如果你要加密一个1GB的讯息,你就要有一个1GB的密钥,并且要能安全的传送这个密钥。
既然你可以安全的传送跟明文一样长的密钥,那你怎麽不乾脆拿来传讯息。
明天我会来介绍一个有名的串流加密方法,叫做RC4。
跟 OTP 不同的是,RC4 是可以拿来使用的。(曾经)
图片来源:
https://imgflip.com/i/1z72rk
https://unwire.hk/2015/03/09/15_programmer_joke/fun-tech/
<<: [铁人赛 Day02] 如何提升你的 React 网站易用性?(Web Accessibility)(上)- 无障碍网站 intro
>>: 02. Hello x Test x Test Pyramid
今天要接续昨天的排程备份来实作「异地备份」 读者们如果对rsync操作尚不熟悉,可到 昨天 复习喔 ...
方法一:检视「最近删除」档案夹 如果你无法在装置上找到想要的照片或影片,你首先应该查看「最近删除」档...
在设定 GAS demos.html 时,我们能看到3.20後的版本多了一个区块 此区块即为新增的网...
前言 昨天分享了关於拒绝的两三事,是因为它容易出现在日常生活与团体协作当中,後续带来的影响也不容小觑...
GitHub:https://github.com/dannypc1628/Angular-Tou...