📄 idea.h
字号:
// IDEA.h: interface for the CIDEA class.
/**
* 描述: 此文件是对实现专利单机版中加密、解密模块中的变量和函数的声明
* 作者: 吴栋
* 起止日期:2003年4月30日至2003年5月8日
*/
#pragma once
#ifndef BLOCKSIZE
#define BLOCKSIZE 4
#endif
#ifndef ROUND
#define ROUND 8
#endif
#ifndef SUBKEYSIZE
#define SUBKEYSIZE 6
#endif
#ifndef CARDINALITY
#define CARDINALITY 65536
#endif
#ifndef SHIFTLEFT
#define SHIFTLEFT 25
#endif
/**
* 模块名: CIDEA
* 说明: 该模块是对IDEA加密、解密算法的具体实现
* 创建日期: 2003年4月30日
* 调用模块: 无
* 被调用模块:CEncrypt
*/
class CIDEA
{
private:
WORD wKeySeed[ ROUND ]; // 密钥种子
WORD pwEncryptKey [ SUBKEYSIZE * ROUND + BLOCKSIZE ]; // 加密密钥
WORD pwDecryptKey [ SUBKEYSIZE * ROUND + BLOCKSIZE ]; // 解密密钥
protected:
WORD wCiphertext [ BLOCKSIZE ] ; // 密文块
WORD wCleartext [ BLOCKSIZE ] ; // 明文块
protected:
/**
* 函数名:Addition
* 参数: wNum1 16位无符号整数
* wNum2 16位无符号整数
* 返回值:返回16为无符号整数
* 说明: 求两数模65536之和
*/
WORD Addition ( WORD wNum1 , WORD wNum2 );
/**
* 函数名: Ciphering
* 参数: 无
* 返回值: 无
* 说明: 对一组明文块进行加密
*/
void Ciphering ( );
/**
* 函数名: Deciphering
* 参数: 无
* 返回值: 无
* 说明: 对一组密文块进行解密
*/
void Deciphering();
/**
* 函数名: GenDecryptKey
* 参数: 无
* 返回值: 无
* 说明: 生成解密密钥
*/
void GenDecryptKey();
/**
* 函数名: GenEncryptKey
* 参数: 无
* 返回值: 无
* 说明: 生成加密密钥
*/
void GenEncryptKey ( );
/**
* 函数名: GenSubKey
* 参数: 无
* 返回值: 无
* 说明: 对密钥种子循环左移25位,生成一组密钥子块
*/
void GenSubKey ( );
/**
* 函数名: Inverse
* 参数: wNum 16位无符号整数
* 返回值: 返回16位无符号整数
* 说明: 求一整数在模65537下的逆
*/
WORD Inverse ( WORD wNum );
/**
* 函数名:Interation
* 参数: sTurn 指出迭代的轮数
* bCrypt 指出是加密还是解密。若为true,则是加密;若为false,则是解密
* 返回值:无
* 说明: 加密或解密过程中的单轮迭代
*/
void Iteration ( short sTurn , bool bCrypt);
/**
* 函数名:Multiplication
* 参数: wNum1 16位无符号整数
* wNum2 16位无符号整数
* 返回值:返回16为无符号整数
* 说明: 求两数模65537之积
*/
WORD Multiplication ( WORD wNum1 , WORD wNum2 );
public:
CIDEA();
/**
* 函数名: SetNewKey
* 参数: pwKeySeed 指向新密钥种子的指针
* nCount 密钥种子的长度
* 返回值: 无
* 说明: 设置新的密钥种子,并产生新的加密和解密密钥
*/
virtual void SetNewKey( WORD * pwKeySeed, int nCount = ROUND );
virtual ~CIDEA();
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -