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

📄 rc5.cpp

📁 一个简单实现RC5加密算法的例子!仅供参考!
💻 CPP
字号:
// RC5.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<iostream.h>
#include <stdlib.h>
#include <stdio.h>

#define UINT32 unsigned int
#define INT32  int
#define UINT16 unsigned short
#define INT16  short
#define UINT8  unsigned char
#define INT8   char



unsigned int subKey[25];
void generateSubKey()
{
   UINT8 i;

   for(i=0;i<25;i++)
   subKey[i] = i;
}


void encrypt(UINT32 *PText,UINT32 *CText)
{
	UINT32 PData[1];
	UINT32 CData[1];
	UINT32 tempData1,tempData2,temp;
	UINT8  i;

	PData[0] = *PText;
	PText++;
	PData[1] = *PText;
    CData[0] = *CText;
    CText++;
    CData[1] = *CText;
    tempData1 = PData[0] + subKey[0];
    tempData2 = PData[1] + subKey[1];
	for(i=1;i<=12;i++)
	{
       temp = tempData1;

       tempData1 ^= tempData2;
	   _rotl(tempData1,tempData2);
       tempData1 += subKey[2*i];

       tempData2 ^= temp;
	   _rotl(tempData2,temp);
       tempData2 += subKey[2*i + 1];
	   
	}

    CData[0] = tempData1;
    CData[1] = tempData2;
}


void decrypt(UINT32 *PText,UINT32 *CText)
{

	UINT32 PData[1];
	UINT32 CData[1];
	UINT32 tempData1,tempData2,temp1,temp2;
	UINT8  i;

//	PData = PText;
//    CData = CText;
	PData[0] = *PText;
	PText++;
	PData[1] = *PText;
    CData[0] = *CText;
    CText++;
    CData[1] = *CText;
	tempData1 = CData[0];
	tempData2 = CData[1];
	for(i=12;i<=1;i--)
	{
       temp1 = tempData1;
       temp2 = tempData2;

       tempData1 = CData[0] - subKey[2*i];
       tempData2 = CData[1] - subKey[2*i + 1];

	   _rotr(tempData2,temp1);
       tempData2 ^= temp1;

	   _rotr(tempData1,temp2);
       tempData1 ^= temp2;
	   
	}

    PData[0] = tempData1 - subKey[1];
    PData[1] = tempData2 - subKey[0];

}


int main()
{
	UINT32 PlainText[1];
	UINT32 CipherText[1];
    
    generateSubKey();
	cout<<"Hello!!\n\n";
/*	cout<<"请输入你要被加密的数据(HEX,32位)\n";
	cout<<"\t\t数据1:";
	cin>>PlainText[0];
	cout<<"\t\t数据2:";
	cin>>PlainText[1];
 */
	PlainText[0] = 0x5a5a5a5a;
	PlainText[1] = 0x12345678;

  	cout<<"加密前的数据为:"<<PlainText[0]<<","<<PlainText[1]<<"\n";   

	encrypt(PlainText,CipherText);

  	cout<<"加密后的数据为:"<<CipherText[0]<<","<<CipherText[1]<<"\n";   

	decrypt(PlainText,CipherText);

  	cout<<"解密后的数据为:"<<PlainText[0]<<","<<PlainText[1]<<"\n"; 

	return 0;
}



⌨️ 快捷键说明

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