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

📄 test.cpp

📁 tea加密解密DLL,可调用相应的原文,密钥实现加密,然后通过密文,密钥解密
💻 CPP
字号:
#include "tea.h"
#include "util.h"
#include <iostream>

using namespace std;

int main() {

	const string plainStr("AD DE E2 DB B3 E2 DB B3");
	const string keyStr("01 01 75 21 DB E2 DB B3 11 B4 49 01 A5 01 01 01");
	const int SIZE_IN = 8, SIZE_OUT = 8, SIZE_KEY = 16;
	byte plain[SIZE_IN], crypt[SIZE_OUT], key[SIZE_KEY];

	size_t size_in = hexStringToBytes(plainStr, plain);
	size_t size_key = hexStringToBytes(keyStr, key);

	if (size_in != SIZE_IN || size_key != SIZE_KEY)
		return -1;

	cout << "Plain: " << bytesToHexString(plain, size_in) << endl;
	cout << "Key  : " << bytesToHexString(key, size_key) << endl;

	TEA tea(key, 16, true);
	tea.encrypt(plain, crypt);
	cout << "Crypt: " << bytesToHexString(crypt, SIZE_OUT) << endl;

	tea.decrypt(crypt, plain);
	cout << "Plain: " << bytesToHexString(plain, SIZE_IN) << endl;
	return 0;
}

void encrypt(unsigned long *v, unsigned long *k) {
	unsigned long y=v[0], z=v[1], sum=0, i;			/* set up */
	unsigned long delta=0x9e3779b9;					/* a key schedule constant */
	unsigned long a=k[0], b=k[1], c=k[2], d=k[3];	/* cache key */
	for (i=0; i < 32; i++) {						/* basic cycle start */
		sum += delta;
		y += ((z<<4) + a) ^ (z + sum) ^ ((z>>5) + b);
		z += ((y<<4) + c) ^ (y + sum) ^ ((y>>5) + d);/* end cycle */
	}
	v[0]=y;
	v[1]=z;
}

void decrypt(unsigned long *v, unsigned long *k) {
	unsigned long y=v[0], z=v[1], sum=0xC6EF3720, i;	/* set up */
	unsigned long delta=0x9e3779b9;						/* a key schedule constant */
	unsigned long a=k[0], b=k[1], c=k[2], d=k[3];		/* cache key */
	for(i=0; i<32; i++) {								/* basic cycle start */
		z -= ((y<<4) + c) ^ (y + sum) ^ ((y>>5) + d);
		y -= ((z<<4) + a) ^ (z + sum) ^ ((z>>5) + b);
		sum -= delta;									/* end cycle */
	}
	v[0]=y;
	v[1]=z;
}

⌨️ 快捷键说明

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