RSA加密

RSA是一种公开密钥加密(非对称密钥)。 RSA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它。但是有不少新来的同事对它不太了解,恰好看到一本书中作者用实例对它进行了简化而生动的描述,使得高深的数学理论能够被容易地理解。我们经过整理和改写特别推荐给大家阅读,希望能够对时间紧张但是又想了解它的同事有所帮助。 RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名。RSA以它的三个发明者Ron... Read More | Share it now!

AES加密

AES属于一种共有密钥加密(对称密码),旨在取代DES成为广泛使用的标准。 一、加密过程 二、数据结构 加密解密算法的输入是一个128位分组。这些分组被描述成4×4的字节方阵,这个分组被复制到state数组中,并在加密和解密的每一阶段都被修改。在字节方阵中,每一格都是一个字,包含了4字节。在矩阵中字是按列排序的。 加密由N轮构成,轮数依赖于密钥长度:16字节密钥对应10轮,24字节密钥对应12轮,32字节对应14轮。 三、加密解密的详细结构 AES未使用Feistel结构。其前N-1轮由4个不同的变换组成:字节代替、行移位、列混淆和轮密钥加。最后一轮仅包含三个变换。而在第一轮前面有一个起始的单变换(轮密钥加),可以视为0轮。   字节代替(SubBytes):用一个S盒完成分组的字节到字节的代替。   行移位(ShiftRows):一个简单的置换。   列混淆(MixColumns):利用域GF(28)上的算术特性的一个代替。   轮密钥加(AddRoundKey):当前分组和扩展密钥的一部分进行按位异或XOR。 首尾使用轮密钥加的理由:若将其他不需要密钥的阶段放在首尾,在不知道密钥的情况下就能计算其逆,这就不能增加算法的安全性。 加密原理:轮密钥加实际是一种Vernam密码形式,其本身不难被破解。另外三个阶段一起提供了混淆、扩散和非线性功能。这三个阶段没有涉及密钥,就它们自身而言,并未提供算法的安全性。然而,该算法经历一个分组的XOR加密(轮密钥加),再对该分组混淆扩散(其他三个阶段),再接着又是XOR加密,如此交替进行,这种方式非常有效非常安全。 可逆原理:每个阶段均可逆。对字节代替、行移位和列混淆,在解密算法中用它们相对应的逆函数。轮密钥加的逆就是用同样的轮密钥和分组相异或,其原理就是A⊕B⊕B... Read More | Share it now!

排列组合计算公式

排列的定义:从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号... Read More | Share it now!

打开vim光标自动跳到上次退出位置

刚初始时打开vim光标会自动跳到上次退出的位置,经过一番IDE的设置和安装一些插件后,每次打开vim后光标总是停在第一行的开头位置。下面的设置可以恢复之前光标的位置:在~/.vimrc或者/etc/vimrc文件中加入下面语句   ... Read More | Share it now!

Floyd

弗洛伊德(Floyd)算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或有向图负权(但不可存在负权回路)的最短路径问题,同时也被用于计算有向图的传递闭包。 通过Floyd计算图G=(V,E)中各个顶点的最短路径时,需要引入两个矩阵,矩阵S中的元素a表示顶点i(第i个顶点)到顶点j(第j个顶点)的距离。矩阵P中的元素b,表示顶点i到顶点j经过了b记录的值所表示的顶点。 假设图G中顶点个数为N,则需要对矩阵D和矩阵P进行N次更新。初始时,矩阵D中顶点a的距离为顶点i到顶点j的权值;如果i和j不相邻,则a=∞,矩阵P的值为顶点b的j的值。... Read More | Share it now!