版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HQ354974212/article/details/83688453
一种数据映射方式,自动生成对应表,可以用于初级加密。
#include <stdio.h>
#include <algorithm>
#include <ctime>
using namespace std;
void Print(unsigned char *p,int N)
{
for (int i = 1; i <= N; ++i)
{
printf("0x%02X,", p[i - 1]);
if (i % 16 == 0) printf("\n");
}
printf("\n-------------------------------------------------------------------\n");
}
int main()
{
//打印映射表
unsigned char map1[256] = { 0 };
unsigned char map2[256] = { 0 };
unsigned char map3[256] = { 0 };
for (int i = 0; i < 256; ++i)
{
map1[i] = i;
}
map1[100] = 255;
map1[255] = 100;
Print(map1,256);
//随机打乱
srand((unsigned int)time(0));
random_shuffle(map1, map1+255);
Print(map1,256);
//产生映射表
for (int i = 0; i < 256; ++i)
{
unsigned char v = map1[i];
map2[v]= i ;
}
Print(map2,256);
//测试映射表
for (int i = 0; i < 256; ++i)
{
unsigned char v = map2[i];
map3[v] = i;
}
Print(map3, 256);
}