黑客
登录
客服
网络安全
黑客资讯

古典密码学基本原理和Base64算法原理

围观人数:668 日期:2020-9-9 14:10:33

密码学,就是研究如何将一个内容(可以是字符串、文件、二进制流)通过一系列算法转换成另一种内容的学科。从广义上来看,有一个算法可以将字符串转换成另一个字符串即可,即该算法可逆不可逆都可以;从狭义上来看,该算法可以加密但同时需要解密。

 

不管你有没有专门学过密码学,我敢保证,你一定无时无刻不在接触它。举个例子,你开发的应用程序基本都会包含注册登录功能,而注册登录一般都会有“密码”字段,你将“密码”存入数据库时,都会调用加密算法;再比如,为了保证接口的安全性,你可能会提供“Token”字段,后台通过校验“Token”的合法性来判断当前接口请求者是否合法,这里的“Token”往往也会采用加密算法来生成。

 

如果你没有学过密码学,上述这些例子你只是在应用阶段,知道怎么调用前人已封装好的算法来加密你的数据。你可能会想,我知道一般的加密算法,我也知道怎么使用它,无需了解其底层原理,也不会影响我的应用安全,我也能保证应用安全。可事实真的是如此吗?

 

这里我不妨给你做个假设。假设你不懂密码学,你只知道怎么使用加密算法来加密你的数据,会出现什么事呢?在某一天,因为某种原因,你存储在服务器的加密密钥被泄露了,黑客又知道你的系统是使用的何种加密算法,而加密算法一般是公开的,这时你的加密数据在黑客面前就变得透明;但如果你知道这些加密算法的底层原理,你就可以针对公开的加密算法来做微调,变成了你自己的加密算法,即使黑客知道你用的是何种加密算法,也无法在短时间内破解。

 

当然,上述例子可能会比较极端,但也不是没有可能。学好密码学,更重要的一点是更有助于你的职业发展。比如,你的老板让你开发一款安全级别要求很高的系统,需要你提供一套完整的加密方案,如果你不懂密码学,你就不知道怎么规划加密算法。我在这里提到的学习密码学,并不是说你能够自己设计一套加密算法,你只需要了解现有的常用加密算法的底层实现原理就够了。

 

提到密码学,你可能首先会想到DES、AES、RSA等这些加密算法。没错,它们都属于密码学要学习的范畴。密码学是一个很宽泛的概念,要精通密码学需要很深厚的数学功底,本文也不会教你怎么实现自己的加密算法,但是会带你研究已公开的加密算法。

 

加密算法那按照年代可以分为古典密码和现代密码,按照密钥的对称方式可对称加密和非对称加密。当然,还有一些算法从狭义上来讲不属于加密算法,但是可以将其归为密码学的范畴,比如MD5、SHA1、Base64等。

 

本文我会带你了解古典密码学和Base64的算法原理。

 

古典密码学

密码学的出现最初是应用于军事上,如果你看过古装电视剧应该知道,在古代,人们传信一般通过飞鸽传书、鸿雁传书等方式。普通老百姓用明文来传递倒也没什么,如果在战争中,友军之间用明文来传书,中途被敌人拦截下来,后果将非常严重,很有可能就把本方的军事部署给泄露了。于是,人们想到了通过一些手段,将明文的内容转成密文,并在全军中通告解密方法。这样一来,即使敌人截获了情报,也无法获取有效的内容,这就是古典密码。

 

古典密码不像现在的密码,运用了各种数学原理,它的算法也都比较简单,但也分了很多种。接下来,我将带你了解一些比较著名的古典密码。

 

凯撒密码

在古罗马,有一位非常著名的帝王--凯撒大帝。相传,凯撒大帝为了保护本方重要的军事信息,发明了一种加密方法,用于在军队之间传信,后人称其为凯撒密码。

 

凯撒密码的算法非常简单,其基本方法为:将字母表A-Z和a-z按顺序排列,设定一个偏移值,比如设置为3,那么加密时对应位的字母依次向后偏移3位,比如字母A,偏移后的密文就是D,大小写要区分,如果为a,则偏移后为d。解密时,密文依次向前偏移3位即可。(注:如果向后偏移值超出后,又继续从第一个字母开始)

 

凯撒密码只会加解密字母,遇到其他字符,则会明文输出。

 

思考:请用凯撒密码加密字符串:4fEdw2F(偏移值:5)。

 

栅栏密码

栅栏密码,就是将明文分为N行(这里的N不固定),然后将字母在N行间交替输出,最后,将每行字母按顺序排列出来,就是密文。我描述的可能比较抽象,下面,我通过有一个实际的例子带你了解栅栏密码。

 

比如有一段文本:I Love You。我们分为两行(这里的N=2)如下:

 

I o e o

L v Y u

 

最后连成一行形成密文:IoeoLvYu。

 

解密时,将密文分为两行:

 

I o e o

L v Y u

 

最后上下交替输出,还原出明文:I Love You。

 

思考:请用栅栏密码加密字符串:The Dog is Cute。(N=3)

 

维吉尼亚密码

维吉尼亚密码由凯撒密码组成密码字母表,加解密时通过查询密码字母表得出明文和密文的映射关系。下图就是一种维吉尼亚密码字母表。

 

 

其中,我们设定列代表明文,行代表密钥。

 

比如我们要加密字符串:YOUAREMYLOVE,密钥为ABCDE。明文为12个字符,密钥只有5个字符,因此需要将密钥补齐12位,补齐后的密钥为:ABCDEABCDEAB。从第一个字母Y开始,它对应的密钥为A,我们从密码字母表中找到A行Y列对应的字母为Y,第二个字母为O,密钥为B,找到B行O列的字母为P,依次类推,最终得到的密文为:BPWDVENAOSVF。

 

思考:请用维吉尼亚密码加密字符串:ILIKE(密钥为:YO)。

最新文章

推荐文章

热门文章

黑客技术 黑客软件 黑客教程 黑客书籍

关于我们 | 免责声明 | 学员守则 | 广告服务 | 联系我们

©2013-2020 xf1433.com 版权所有

本站资源仅供用于学习和交流,请遵循相关法律法规