1、第 2讲 密码算法与编程密码学是一门古老而深奥的学科 , 对一般人来说是非常陌生的。长期以来,只在很小的范围内使用, 如军事、外交、情报等部门计算机密码学是研究计算机信息加密、解密及其计算机密码学是研究计算机信息加密、解密及其变换的科学变换的科学 ,是数学和计算机的交叉学科,也是一门新兴的学科。目前 已成为计算机安全主要的研究方向第 2讲 密码算法与编程 2.1 消息和加密 2.2 古典密码算法 2.3 现代密码算法 2.4 编程实例2.1 消息和加密 消息被称为 明文 。 用某种方法伪装消息以隐藏它的内容的过程称为 加密 , 加了密的消息称为 密文 , 而把密文转变为明文的过程称为 解密 ,
2、 如图表明了加密和解密的过程 。2 .1 消息和加密 密码算法是用于加密和解密的数学函数 算法可以分为两种策略以达到保密的效果 1、算法本身保密(解密者可以购买其产品进行解密) 2、算法公开,使用密钥2 .1 消息和加密 加密和解密需要用到 密码算法 公开密码算法,保存密钥,是通常的做法。密钥用 K表示 。加密和解密运算都使用这个密钥,如图所示 有些算法使用不同的加密密钥和解密密钥,也就是说 加密密钥 K1与相应的解密密钥 K2不同 ,也称为 非对称密码算法 、公钥密码算法,如图所示。2.2 古典密码算法 2.2.1代码加密 使用通信双方预先 设定的一组有确切含义的如日常词汇、专有名词、特殊用
3、语等的 代码来发送消息 一般只能用于传送一组预先约定的消息2.2 古典密码算法 2.2.2替换加密 将明文字母表 M中的每个字母替换成密文字母表 C中的字母。 这一类密码包括移位密码、替换密码、仿射密码、乘数密码、多项式代替密码、密钥短语密码等。这种方法可以用来传送任何信息,但安全性不及代码加密。因为每一种语言都有其特定的统计规律,如英文字母中各字母出现的频度相对基本固定,根据这些规律可以很容易地对替换加密进行破解。 典型的有凯撒密码 “恺撒密码 ”,它是一种替代密码,通过将字母按顺序推后 3位起到加密作用,如将字母 A换作字母D,将字母 B换作字母 E 2.2 古典密码算法 2.2.3变位加
4、密 变位加密 不隐藏明文的字符,即明文的字母保持相同,但其 顺序被打乱重新排列 成另一种不同的格式。 1)简单变位加密。 预先约定好一组数字表示密钥,将文字依次写在密钥下,再按数字次序重新组织文字实现加密,也有人喜欢将明文逆序输出作为密文。 例如 密钥: 5 2 4 1 6 3 (密文排列次序 ) 明文:信息安全技术 密文:技息全信术安 2.2 古典密码算法2)列变位法。将明文字符分割成个数固定的分组(如 5个一组, 5即为密钥!), 按一组一行的次序整齐排列 ,最后不足一组用任意字符填充,完成后 按列读取 即成密文。3)矩阵变位加密。将明文中的字母按给定的顺序安排在一个矩阵中,然后用另一种顺序选出矩阵的字母来产生密文。一般为 按列变换次序 ,如原列次序为 1234,现为 2413。