你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 计算机安全与维护
IDEA对称密码算法剖析(四)
 

3.1.2 主要函数及流程说明

本实例代码是对IDEA加密算法的独立实现,不涉及到与其他系统和应用的交互。

本实例代码实现主要包括两部分:

1)头文件部分:idea.h。该部分包含了本实例所需要的系统函数以及与IDEA相关的数据结构和函数的声明。

2)算法核心代码部分:idea.cpp。该部分是IDEA算法的加/解密和子密钥生成的实现部分。主要包括如下几个函数(按函数出现的顺序进行介绍,函数中的疑难语句将在源代码中以注释的方式给出):

1static uint16 inv(uint16 x)

该静态函数的功能是提供由加密密钥得到解密密钥的模运算:加密密钥与解密密钥的模216+1乘运算: 1 MOD(216+1)。前文已经提到,由加密子密钥通过计算模加和模乘运算的逆元即可得到解密子密钥。函数的返回值为16位的无符号整数,参数x也为16位的无符号整数。

2static void en_key_idea(word16 *userkey, word16 *Z)

该静态函数的功能是将用户提供的128位会话密钥产生生成迭代运算所需要的52个子密钥。该函数没有返回值,生成的52个子密钥存放在一个16位的数组Z中,Z为该函数的参数之一,另一个参数是指向16位的字类型的指针(16*8=128位)。

3static void de_key_idea(IDEAkey Z,IDEAkey DK)

该静态函数的功能是生成解密子密钥,并将其存放到数组Z中。

4uint16 mul(uint16 a, uint16 b)

该函数的功能是实现模乘运算。(见图1图例说明部分。)

5static void cipher_idea(word16 in[4],word16 out[4],register CONST IDEAkey Z)

该静态函数是本算法的核心代码部分,其功能就是在获得64位明文的416位子分组和52个子密钥的基础上实现图1所示的加/解密迭代运算过程。

6void cipher_file(FILE *in,FILE *out,word16 *key)

该函数的功能就是调用5)中的加密函数实现对给定明文文件(.txt文件)和给定的128位会话密钥的IDEA加密。

7void decipher_file(FILE *in,FILE *out,word16 *key)

该函数的功能是实现解密。由于IDEA加密算法的加解密过程完全一样,所不同的仅仅是解密过程中用到的是由52个加密子密钥导出的52个解密子密钥。

8void swap_files_and_clean_up(char *file)

该函数的功能是将加/解密的结果以文件形式存放到磁盘。

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089