1、a t t a c kb e g i n sa t f i v e实验 1-1 古典密码算法一实验原理古典密码算法历史上曾被广泛应用, 大都比较简单, 使用手工和机械操作来实现加密和 解密。 它的主要应用对象是文字信息, 利用密码算法实现文字信息的加密和解密。 下面介绍 两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。1 替代密码 替代密码算法的原理是使用替代法进行加密, 就 是将明文中的字符用其它字符替代后形成密文。例如:明文字母 a、b 、c、 d ,用 D、E 、F、G 做对应替换后形成密文。 替代密码包括多种类型, 如单表替代密码、 多明码替代密码、 多字母
2、替代密码、 多表替代密码等。 下面我们介绍一种典型的单表替代密码, 恺撒(c aesar)密码, 又叫循环移位密码 。 它的加密方法, 就是将明文中的每个字母用此字符在字母表中后面第 k 个字母替代。 它的加 密过程可以表示为下面的函数:E(m)=(m+k) mod n其中: m 为 明文字母在字母表中的位置数;n 为 字母表中的字母个数; k 为密钥;E(m)为密文字母在字母表中对应的位置数。例如,对于明文字母 H,其在字母表中的位置数为 8,设 k=4,则按照 上式计算出来的 密文为 L:E(8) = (m+k) mod n = (8+4) mod 26 = 12 = L2 置换密码 置换
3、密 码算法的原理是不改变明文字符, 只将字符在明文中的排列顺序改变, 从而实现明文信息的加密。置换密码有时又称为换位密码。 矩 阵 换 位 法 是 实 现 置 换 密 码 的 一 种 常 用方 法 。 它 将 明 文 中 的 字 母 按 照 给 的 顺 序 安 排 在一个矩阵中, 然后用根据密钥提供的顺序重新组合矩阵中字母, 从而形成密文。 例如, 明 文 为 attack begins at five, 密 钥为 cipher, 将明文按照每行 6 列的 形式排在矩阵中, 形成如下形 式:根据密钥 cipher 中各字母 在字母表中出现的先后顺序,给定一个置换:1 2 3 4 5 6f =1
4、 4 5 3 2 6根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第 5 列 ,第 3 列, 第 2列,第 6 列 的顺序排列,则有下面形式:a a c t t k b i n g e s a i v f t e从而得到密文:aba tgftetcnvaiikse其 解 密 的 过 程 是 根 据 密 钥 的 字 母 数 作 为 列 数 , 将 密 文 按 照 列 、 行 的 顺 序 写 出 , 再 根 据 由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。二实验目的通过编程实现替代密码算法和置换密码算法, 加深对古典密码体制的了解, 为深入 学习密码学奠定基础。三实验环境运行
5、windows 或 linux 操 作系统的 PC 机,具有 gcc(l inux) 、VC(win dows)等 C语言编译环境。四实验内容和步骤1 根据实验原理部分对替代密码算法的介绍, 自己创建明文信息, 并选择一个密钥 k, 编写替代密码算法的实现程序,实现加密和解密操作。2 根据实验原理部分对置换密码算法的介绍, 自己创建明文信息, 并选择一个密钥, 编写置换密码算法的实现程序,实现加密和解密操作。五实验报告要求要求上述密码算法最后的实现程序提供加密和解密两个接口:int encrypt ( )和 int decrypt ( ),当加密或者解密成功时返回 CRYPT_OK,失败时返回 CRYPT_ERROR。