实验一 古典密码算法实验
一、实验目的
(1)掌握密码学基础知识,包括明文、密文、密钥、加密和解密等基本概念。
(2)掌握古典密码基础知识,掌握代替密码算法和置换密码基本原理。
(3)掌握移位密码、维吉尼亚密码、周期置换密码、列置换密码的基本原理。
(4)熟悉编程环境,掌握古典密码算法的编程实现方法。
二、实验内容
编程实现移位密码、维吉尼亚密码、周期置换密码、列置换密码算法,分别用这些加密算法对文本数据进行加密,更换不同的密钥,查看加密后的密文的变化。要求上述密码算法最后的实现程序提供加密和解密两个接口函数:int encrypt(char* plain, char* cipher, char * key)和int decrypt(char* plain, char* cipher, char * key),当加密或解密成功时返回CRYPT__OK,失败时返回CRYPT__ERROR。
三、实验环境
运行Windows 或Linux 操作系统的PC 机,具有gcc(Linux)、VC(Windows)等C语言编译环境。
四、实验原理
在密码编码体制中有两种最基本也是最古老的编码体制一直沿用至今,它们是代替密码和置换密码,其历史悠久并且是现代密码体制的基本组成部分,在密码学中占有重要地位。古典密码是密码学发展的一个阶段,也是近代密码学产生的渊源,一般把Shannon 在1949年发表“保密系统的通信理论”之前的时期称为古典密码时期。尽管古典密码大多比较简单,一般可用手工或机械方式实现,且都可用统计分析方法破译,目前已很少采用。但是,古典密码所采用的代替技术和置换技术仍然是现代分组密码算法设计的基础,了解它们的设计原理,有助于理解、设计和分析现代密码。
代替(Substitution)是古典密码中最基本的处理技巧,就是将明文字母由其他字母表中的字母替换的一种方法。代替密码(Substitution Cipher)就是使用代替法进行加解密的密码算法。代替密码的密钥是一个替换表,它表示了明文字母与密文字母的对应关系。加密时,通过查表,明文字母被逐个替换后,生成看似无任何意义的字母串,即密文。解密时,逆向使用替换表,将密文字母逐个替换为明文字母。