赞
踩
原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。
在信息安全领域,一般会遇到"窃听"、“篡改”、“伪装”、"否认"这些威胁,而密码学家们提供了相应的密码学算法来解决这些问题,如下:
像对称加密、公钥加密、消息散列、消息认证码、数字签名这些算法,也被称为密码学家的工具箱。
现如今的加密算法,主要分为两大类,一类是对称加密,而另一类是非对称加密,而对称加密在实现方式上又可以分为两类,一类是分组加密算法,另一类是流加密算法。
分组加密(block cipher),每次加密或解密数据中特定长度的一小块,前一块处理完了再处理下一块,直到所有数据都处理完,这里的“一块”就称为分组,而一个分组的bit数就是分组长度。
常见的分组加密算法有DES与AES,比如DES的分组长度是64bit,而AES的分组长度可以是128bit或192bit或256bit,由于DES或AES的算法过程比较复杂,暂不介绍,但我们有必要了解一下它们经常使用的基础运算XOR。
在位运算中,一般有AND(与)、OR(或)、NOT(非)运算,然而还有一种位运算也非常常用,即XOR(异或),它的运算规则如下:
简单来说,就是两边相同结果是0,两边不同结果是1,所以才称为“异或”嘛!
而如果将XOR运算应用在多bit的数据上,我们会发现XOR有非常好的自反特性,如下:
$ pip install xortool # 明文文件,内容是hello $ echo -n hello > plain.txt $ xxd plain.txt 00000000: 6865 6c6c 6f hello # 用xor算法加密,密码为pass,生成encrypt.bin $ cat plain.txt | xortool-xor -n -r pwd -f - > encrypt.bin $ xxd encrypt.bin 00000000: 1812 081c 18 ..... # 用XOR算法解密,可还原成明文 $ xortool-xor -n -r pwd -f encrypt.bin hello
虽然对称加密算法的核心是XOR,但如果加密算法只使用XOR的话,其加密的强度并不够高,很容易被破译或泄密。
下面会以一个故事展开密码学的各种算法概念及用途,背景如下:
男主:小李 ,女主:小红,男配:大李,小李的哥哥,女配:小美,小红的闺蜜
小李与小红是同班同学,专业计算机,小李对小红倾慕已久!
为了表达爱慕之情,小李写了一封情书,写了好长时间,决定发给小红,但又不想被网络上的其他人看到!如下:
由于小李最近学习了XOR加密算法,于是使用XOR加密了情书,如下:
cat plain.txt | xortool-xor -n -r pwd -f - > encrypt.bin
可以看到,加密后的数据都是乱码了,效果很好!
小李喜出望外,将自己的成果展示给哥哥大李看!大李指出,这样的加密算法强度不够高,密码学家们可以轻易破解,开始给小李展示破译过程!
# 统计原文词频 $ grep -oP . plain.txt |sort|uniq -c|sort -nr|head 66 , 37 你 31 的 25 我 15 是 15 不 13 一 12 想 10 会 9 都 # 统计密文词频 $ xxd -g3 -c3 -ps encrypt.bin |sort|uniq -c|sort -nr|head 66 9fcbe8 37 94cac4 31 97ede0 25 96fff5 15 96efcb 15 94cfe9 13 94cfe4 12 96f4d7 10 94cbfe 9 99f4d9 # 按词频构造替换表 $ paste <(xxd -g3 -c3 -ps encrypt.bin |sort|uniq -c|sort -nr|head|awk '{print $2}'|sed -E 's/../\\x&/g') <(grep -oP . plain.txt |sort|uniq -c|sort -nr|head|awk '{print $2}') \x9f\xcb\xe8 , \x94\xca\xc4 你 \x97\xed\xe0 的 \x96
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。