哪位大佬可以吧下面的c语言转化成Python语言 10
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<memory.h>#defineFIRST_S...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#define FIRST_SEED (0xA1)
#define SECOND_SEED (0xA2)
#define THIRD_SEED (0xA3)
void my_xor(char *src , char* dst , int len , unsigned char seed)
{
unsigned char local_seed = seed;
int i = len;
for( i = len-1 ; i >= 0; i --)
{
dst[i] = src[i] ^ (local_seed);
local_seed = dst[i];
}
}
void de_xor(char *src , char* dst , int len , unsigned char seed)
{
int i = 0;
for( i = 0 ; i < len -1 ; i ++)
{
dst[i] = src[i] ^ src[i+1];
}
dst[i] = src[i] ^ seed;
}
void debugstr(char* dst){
char sn[256] = {0};
sprintf(sn, "%02X%02X%02X%02X%02X%02X%02X" , dst[0] &0xff,
dst[1] & 0xff,
dst[2] & 0xff,
dst[3] & 0xff,
dst[4] & 0xff,
dst[5] & 0xff,
dst[6] & 0xff
);
printf("D:%s\n", sn);
}
void encryption(char *src , char* dst , int len)
{
char temp_src[256];
char temp_dst[256];
memcpy(temp_src, src, len);
debugstr(temp_src);
my_xor(temp_src,temp_dst,len,FIRST_SEED);
debugstr(temp_dst);
my_xor(temp_dst,temp_src,len,SECOND_SEED);
my_xor(temp_src,temp_dst,len,THIRD_SEED);
memcpy(dst,temp_dst , len);
}
void decription(char *src, char* dst , int len)
{
char temp_src[256];
char temp_dst[256];
memcpy(temp_src, src, len);
de_xor(temp_src,temp_dst,len,THIRD_SEED);
de_xor(temp_dst,temp_src,len,SECOND_SEED);
de_xor(temp_src,temp_dst,len,FIRST_SEED);
memcpy(dst,temp_dst , len);
}
void print_mem(char* data, int len)
{
int i =0;
for( i = 0 ; i < len ; i ++)
{
printf("%02x " , data[i] & 0xff);
}
printf("\n");
}
void generate(int id , char* buf)
{
char src[256] = "abcdefg";
char dst[256];
char decripyt[256];
sprintf(src,"%07d",id);
int len = strlen(src);
printf("%s :%d\n", src, len);
encryption(src,dst,len);
decription(dst,decripyt,len);
printf("DEC: %s\n", decripyt);
if(memcmp(src,decripyt,len) != 0)
{
printf("Not equal!!!\n");
}
sprintf(buf, "%02X%02X%02X%02X%02X%02X%02X" , dst[0] &0xff,
dst[1] & 0xff,
dst[2] & 0xff,
dst[3] & 0xff,
dst[4] & 0xff,
dst[5] & 0xff,
dst[6] & 0xff
);
}
int main(int argc, char* argv[]){
char buf[200] = {0};
generate(161, buf);
printf("%s\n",sn);
exit(0);
} 展开
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#define FIRST_SEED (0xA1)
#define SECOND_SEED (0xA2)
#define THIRD_SEED (0xA3)
void my_xor(char *src , char* dst , int len , unsigned char seed)
{
unsigned char local_seed = seed;
int i = len;
for( i = len-1 ; i >= 0; i --)
{
dst[i] = src[i] ^ (local_seed);
local_seed = dst[i];
}
}
void de_xor(char *src , char* dst , int len , unsigned char seed)
{
int i = 0;
for( i = 0 ; i < len -1 ; i ++)
{
dst[i] = src[i] ^ src[i+1];
}
dst[i] = src[i] ^ seed;
}
void debugstr(char* dst){
char sn[256] = {0};
sprintf(sn, "%02X%02X%02X%02X%02X%02X%02X" , dst[0] &0xff,
dst[1] & 0xff,
dst[2] & 0xff,
dst[3] & 0xff,
dst[4] & 0xff,
dst[5] & 0xff,
dst[6] & 0xff
);
printf("D:%s\n", sn);
}
void encryption(char *src , char* dst , int len)
{
char temp_src[256];
char temp_dst[256];
memcpy(temp_src, src, len);
debugstr(temp_src);
my_xor(temp_src,temp_dst,len,FIRST_SEED);
debugstr(temp_dst);
my_xor(temp_dst,temp_src,len,SECOND_SEED);
my_xor(temp_src,temp_dst,len,THIRD_SEED);
memcpy(dst,temp_dst , len);
}
void decription(char *src, char* dst , int len)
{
char temp_src[256];
char temp_dst[256];
memcpy(temp_src, src, len);
de_xor(temp_src,temp_dst,len,THIRD_SEED);
de_xor(temp_dst,temp_src,len,SECOND_SEED);
de_xor(temp_src,temp_dst,len,FIRST_SEED);
memcpy(dst,temp_dst , len);
}
void print_mem(char* data, int len)
{
int i =0;
for( i = 0 ; i < len ; i ++)
{
printf("%02x " , data[i] & 0xff);
}
printf("\n");
}
void generate(int id , char* buf)
{
char src[256] = "abcdefg";
char dst[256];
char decripyt[256];
sprintf(src,"%07d",id);
int len = strlen(src);
printf("%s :%d\n", src, len);
encryption(src,dst,len);
decription(dst,decripyt,len);
printf("DEC: %s\n", decripyt);
if(memcmp(src,decripyt,len) != 0)
{
printf("Not equal!!!\n");
}
sprintf(buf, "%02X%02X%02X%02X%02X%02X%02X" , dst[0] &0xff,
dst[1] & 0xff,
dst[2] & 0xff,
dst[3] & 0xff,
dst[4] & 0xff,
dst[5] & 0xff,
dst[6] & 0xff
);
}
int main(int argc, char* argv[]){
char buf[200] = {0};
generate(161, buf);
printf("%s\n",sn);
exit(0);
} 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询