📄 test.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 + -