⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 idea.h

📁 IDEA对称算法的软件实现
💻 H
字号:
/**********************************************************************
 *  idea.h
 *
 *	Author : Sunflower
 *	CopyRight 2001 DATech
 *	
 *	得安公司第二代加密卡idea运算程序。包括密钥生成、加解密
 **********************************************************************/
#ifndef _IDEA_H_
#define _IDEA_H_


#define MUL(x,y) \
	((t16 = (y))? \
		(x = low16(x))? \
			t32 = (ARM_UINT32)x*t16, \
			x = low16(t32), \
			t16 = (unsigned short)(t32 >> 16), \
			x = (unsigned short)((x-t16)+(x<t16)) \
		: \
			(x = (unsigned short)(1-t16)) \
	: \
		(x = (unsigned short)(1-x)))

#define low16(x) (unsigned short)(x)

//typedef unsigned short ARM_UINT16;


void idea_enc(ARM_IDEA_CTX *c,unsigned char *data,int blocks);
void idea_dec(ARM_IDEA_CTX *c,unsigned char *data,int blocks);
void ideaCipher(ARM_UINT8 *inbuf, ARM_UINT8 *outbuf, ARM_UINT16 *key);
ARM_UINT16 mulInv(ARM_UINT16 x);

ARM_RV ideaExpandKey(ARM_UINT8 const *userkey, ARM_UINT32 userkeyLen,
				   ARM_UINT16 *EK, ARM_UINT32 *EKbytes);
ARM_RV ideaInvertKey(ARM_UINT16 const *EK, ARM_UINT32	ekBytes,
				   ARM_UINT16 DK[IDEAKEYLEN], ARM_UINT32 *dkBytes);
ARM_RV Arm_IdeaExpandEncKey(
			ARM_UINT8   *pbIdeaKey,
			ARM_UINT32  ulIdeaKeyLen,
			ARM_UINT8   *pbIdeaEncKey,
			ARM_UINT32  *ulIdeaEncKeyLen);

ARM_RV Arm_IdeaExpandDecKey(
			ARM_UINT8   *pbIdeaKey,
			ARM_UINT32  ulIdeaKeyLen,
			ARM_UINT8   *pbIdeaDecKey,
			ARM_UINT32  *ulIdeaDecKeyLen);

ARM_RV Arm_IdeaEncRaw(
			ARM_UINT8   *pbIdeaEncKey,
			ARM_UINT32  ulIdeaEncKeyLen,
			ARM_UINT8   *pbInData,
			ARM_UINT32  ulInDataLen,
			ARM_UINT8   *pbOutData,
			ARM_UINT32  *ulOutDataLen);

ARM_RV Arm_IdeaDecRaw(
			ARM_UINT8   *pbIdeaDecKey,
			ARM_UINT32  ulIdeaDecKeyLen,
			ARM_UINT8   *pbInData,
			ARM_UINT32  ulInDataLen,
			ARM_UINT8   *pbOutData,
			ARM_UINT32  *ulOutDataLen);

ARM_RV Arm_IdeaEncEcbInitialize(
			ARM_IDEA_CTX  *ideaCtx,
			ARM_UINT8    *pbIdeaKey,
			ARM_UINT32   ulIdeaKeyLen);

ARM_RV Arm_IdeaEncEcbUpdate(
			ARM_IDEA_CTX *ideaCtx,
			ARM_UINT8   *pbInData,
			ARM_UINT32  ulInDataLen,
			ARM_UINT8   *pbOutData,
			ARM_UINT32  *ulOutDataLen);

ARM_RV Arm_IdeaEncEcbFinalize(
			ARM_IDEA_CTX *ideaCtx,
			ARM_UINT8   *pbInData,
			ARM_UINT32  ulInDataLen,
			ARM_UINT8   *pbOutData,
			ARM_UINT32  *ulOutDataLen);

ARM_RV Arm_IdeaDecEcbInitialize(
			ARM_IDEA_CTX  *ideaCtx,
			ARM_UINT8    *pbIdeaKey,
			ARM_UINT32   ulIdeaKeyLen);

ARM_RV Arm_IdeaDecEcbUpdate(
			ARM_IDEA_CTX *ideaCtx,
			ARM_UINT8   *pbInData,
			ARM_UINT32  ulInDataLen,
			ARM_UINT8   *pbOutData,
			ARM_UINT32  *ulOutDataLen);

ARM_RV Arm_IdeaDecEcbFinalize(
			ARM_IDEA_CTX *ideaCtx,
			ARM_UINT8   *pbInData,
			ARM_UINT32  ulInDataLen,
			ARM_UINT8   *pbOutData,
			ARM_UINT32  *ulOutDataLen);

ARM_RV Arm_IdeaEncCbcInitialize(
			ARM_IDEA_CTX *ideaCtx,
			ARM_UINT8   *pbIdeaKey,
			ARM_UINT32  ulIdeaKeyLen);
	//		ARM_UINT8   *pbIv);

ARM_RV Arm_IdeaEncCbcUpdate(
			ARM_IDEA_CTX *ideaCtx,
			ARM_UINT8   *pbInData,
			ARM_UINT32  ulInDataLen,
			ARM_UINT8   *pbOutData,
			ARM_UINT32  *ulOutDataLen);

ARM_RV Arm_IdeaEncCbcFinalize(
			ARM_IDEA_CTX *ideaCtx,
			ARM_UINT8   *pbInData,
			ARM_UINT32  ulInDataLen,
			ARM_UINT8   *pbOutData,
			ARM_UINT32  *ulOutDataLen);

ARM_RV Arm_IdeaDecCbcInitialize(
			ARM_IDEA_CTX *ideaCtx,
			ARM_UINT8   *pbIdeaKey,
			ARM_UINT32  ulIdeaKeyLen);

ARM_RV Arm_IdeaDecCbcUpdate(
			ARM_IDEA_CTX *ideaCtx,
			ARM_UINT8   *pbInData,
			ARM_UINT32  ulInDataLen,
			ARM_UINT8   *pbOutData,
			ARM_UINT32  *ulOutDataLen);

ARM_RV Arm_IdeaDecCbcFinalize(
			ARM_IDEA_CTX *ideaCtx,
			ARM_UINT8   *pbInData,
			ARM_UINT32  ulInDataLen,
			ARM_UINT8   *pbOutData,
			ARM_UINT32  *ulOutDataLen);

/*****************************************************************
	Arm_Idea_Block		: Idea Operation
	Return value:
		ARMERR_SUCCESS	: Success
		other			: failed
	Parameters:
		Command		: command data buffer
					: nLength			for keyLen
					: nInstruction		for DES_ENCKEY
					: pParameter		for key be expanded
		Result		: Result data buffer
*****************************************************************/
ARM_RV Arm_Idea_Block(CardCommand *Command, CardResult *Result);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -