读书笔记一【加密——换位法】
加密是用来保护数据的方式,要注意,加密必须要能够解密,所以以前认为md5是一种加密算法是不对的。
1.简单的换位法
换位法是比较简单的加密算法,就是以固定顺序更换句子中的词语顺序。
例如句子“我是一名程序员”,采用每3个字母获取一个字的方法,那么把句子的每个字标记一个编号
那么第一轮取到“我”、“名”、“员”三个字
然后继续向后取,已经取过的字则跳过
以此类推,最终得到密文:“我名员程一序是”
解密过程则是通过类似的逆运算方式将文本的字放回到原先的位置即可
但是,这种加密算法的加密性十分弱,只要加密方式被泄露,那么任何人都可以解密密文。
由于这个原因,荷兰密码学家奥古斯特柯克霍夫提出的柯克霍夫法则:数据的安全不应该以来于加密方法本身来保证加密。
2.带密钥的换位法
基于柯克霍夫法则,加密的算法本身可以公开,但是使用了“密钥”来进行加密。密钥是不公开的,起到了保证信息安全的作用。
以换位法为例,还是上面那个句子,设定密钥为231
则每次按2、3、1的顺序取字
我 | 是 | 一 | 名 | 程 | 序 | 员 |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
第一次取到的是编号为2的字:是
然后将“是”从句子中剔除,并从“是”后面开始重新编号,获取新的顺序
我 | 一 | 名 | 程 | 序 | 员 |
6 | 1 | 2 | 3 | 4 | 5 |
获取编号为3的字:程
最终获取文字:是程序我员一名
同样,像没有密钥的方式类似,可以通过密钥231将文本恢复为原先的状态
但是,即使有密钥的存在,数据仍然可能被攻击。通常的方式是获取使用了相同密钥的原文和密文,然后反推加密过程,这个方法被称为已知明文攻击。所以,对应这种方法的最好办法是定期更改密码。