天天看点

手画 DES 加密算法流程

        看许式伟的文章时,他提到“怎样成为一个优秀的软件架构师”时,说了这么一句话:“一靠匠心,二靠悟心”(这里他的确写的是悟心,不是悟性,这里的悟心,也许是指“领悟心”的意思吧)。我不知道怎么算匠心,也不知道什么算悟心,但是作为一个做技术的人,也许通过不断的积累和提高自己,慢慢会理解这话的内涵吧。

加密算法

        一直一来我对加密算法都有抵触的心理,原因很简单,想要理解加密算法会涉及到一些计算相关的内容。虽然以前学习过一段时间“软件逆向工程”,但是关于加密算法始终没有去学习过。最近因为自己的心态,与各种其他方面的原因,促使自己想要去把一些常见的加密算法去熟悉一下,至少应该去理解一些常见加密算法的流程。

手画 DES 加密算法流程

        在自己想要学习加密算法的驱动下,学习了一个不算特别复杂的加密算法 —— DES 加密算法,流程不多,数学知识少。关于 DES 加密算法的具体细节不想描述了,毕竟网上有太多了。

        DES 加密算法有几个主要的流程,只要掌握了主要的流程,以及每个流程要处理的内容,我觉得也就算是大体了解了。通过自己几个小时(不是连续几个小时,是每天一个多小时)的学习和理解,在不断的看书、记录、看书、整理……这么一个过程中算是把 DES 算法的流程搞明白了,在搞明白的基础上,自己在纸上画出了 DES 加密算法的流程。

手画 DES 加密算法流程
手画 DES 加密算法流程

        字是比较丑,但是请不要关注我的字。这 3 个流程图就是 DES 加密算法的主要流程了。基本上流程图中每个环节大体要做的内容我也可以描述出来,比如初始置换 IP 和逆初始置换 IP-1 是做什么,S 盒做什么,为什么 64 位的密钥实际只使用了 48 位等都可以按照自己的理解描述出来。当然了,要让我把 S 盒背出来那是不可能的。

继续阅读