异或的加密

准备

#include <stdio.h> 
typedef unsigned char uint8_t;

void show_arr(uint8_t *arr,int len)
{
	int i=0;
	while(i<len)
		printf("%d\t",arr[i++] );
	printf("\n");
}

简单:数据---异或一个数据变成新数据--再次异或那个数据就会打回原形

uint8_t encrypt(uint8_t *data, uint8_t cipherKey , uint8_t length) 
{
    for (int i = 0; i < length; i++) 
    {
        data[i] = ((uint8_t) ((data[i] ^ cipherKey) & 0xff));
    }
    return 1;
}

.......
unsigned char arr[4]={1,2,3,4};
show_arr(arr,4);

encrypt(arr,0xAB,4);
show_arr(arr,4);

encrypt(arr,0xAB,4);
show_arr(arr,4);

上面可以说是一层加密,我们可以多层加密。比如你是data^A^B^C这样就加密了3层 你解密的时候就dat^C^B^A

uint8_t encryptCommand(uint8_t *command,uint8_t size, uint8_t *keyWord , uint8_t length) 
{

    for (int i = 0; i < length; i++) 
    {
        encrypt(command, keyWord[i] , size);
    }
    
    return TRUE;
}

uint8_t decryptCommand(uint8_t *command,uint8_t size, uint8_t *keyWord , uint8_t length)
{
    while(length--)
    {
        encrypt(command, keyWord[length],size);
    }
    return TRUE;
}

猜你喜欢

转载自blog.csdn.net/weixin_42381351/article/details/81163650