摘要:
上文讲的古典加密算法虽然很简单,但是在密码史上是使用最久的加密方式。历史上由于算力有限,加上有学识的人有限,所以直到概率论出现后,古典密码才开始破防。归根结底,英文单词中字母出现的频率是不同的,e以12.702%的百分比占比最高,z只占到0.074%,感兴趣的同学可以去百科查字母频率详细统计数据。如果密文数量足够大,仅仅采用频度分析法就可以破解。如果再加上现代计算机强大的算力,凯撒加密算法更是不堪一击。 阅读全文
摘要:
本系列文章不讲解python的基本语法,本着实用主义的角度来解决问题。如前文所述,首先要建立一个字母表,接着实现一个对字母表的移位。 阅读全文
摘要:
在实际应用时,密钥其实就是位移的个数。但这个数据规模在过去人类没有计算机的时代,靠人类有限的脑力与经验,确实很难猜出来,所以,移位密码是非常经典的算法。直到现在也可以用来进行简单的加解密,一般人不明就里,也就很难猜出其中的规律。但是,在现代计算机高科技面前,这种密码却不堪一击,只能算是玩具性质的益智游戏罢了。 阅读全文
摘要:
此外,也有许多人热衷于给VSCode换个主题,换个色彩与字体等。Python的奥义之一就是尽一切可能避免浪费时间,笔者建议还是简洁为上。
下一期我们讨论最基本的密码学知识,以便后期开发时理解Git/Https等更复杂的概念。 阅读全文
摘要:
不同的算法效率不同,占用内存不同,编写复杂程度不同,后期维护的难易程度也不同。因此,在我们日常工作中,需要有意识地考虑算法的性能,平衡编程、维护、效率等方面的关系,选择合适的算法。本系列后续文章会逐步介绍算法的相关基础知识,希望在归纳整理过程中,和读者共同成长。 阅读全文
摘要:
上期描述了如何在ubuntu18.04下安装python3.8,本期将描述:
· BIOS开启CPU的虚拟化支持
· 如何在windows10/11下安装wsl/wslg
· 如何在有wsl/wslg的情况下安装ubuntu18.04
· 如何在ubuntu18.04下安装python3.8
以上互为基础,缺一不可。 阅读全文
摘要:
ReentrantLock是Java中java.util.concurrent.locks.Lock的一个实现类,顾名思义它是Java中锁的一种实现,具体一点来说它是Java中一种可重入的独占锁。它与synchronized相比在功能上与之基本相同,但ReentrantLock提供了更为丰富灵活的使 阅读全文
摘要:
相比较于windows下安装python,在Linux下安装python实际上是一个非常困难的选择。首先要解决的就是选择哪个发行版本的问题。Linux的内核掌握在技术团队中,但是Linux发行版本则掌握在不同的公司手中。不同的公司出于不同的考虑,在Linux内核的基础上,打包了不同的应用程序,安装了不同的包管理器,实现了不同的发布策略,这就导致了数以百计的发行版本,在市面上,乱花渐欲迷人眼。为此新手的最常见也最难回答的问题就是:我应该使用哪个Linux。 阅读全文
摘要:
上一期介绍了Anaconda的安装,本期介绍Miniconda的安装,它们共同的部分是Conda,确实如此。Conda是一个开源的包管理系统,本身的志向非常宏大,要为Python、 R、 Ruby、 Lua、 Scala、 Java、JavaScript、 C/ C++, FORTRAN提供包管理功能。 阅读全文
摘要:
上期描述了如何在Windows下安装官方的Python3.8,本期描述如何安装Anaconda。建立Python环境这个话题,为何要大费周章、不厌其烦的叙述呢,主要的原因是: 所有的语言在设计时,都假定运行在一个纯净的环境下,但现实往往不是如此。经常在Windows下会安装多个版本的Python; 阅读全文