加急!!!!高手,在线等
以下是GBk编码的,补全代码,输出结果!高手在哪里?着急啊!!!
int encode(const void* raw_in, void* raw_out, uint32_t password, size_t len)
{
const uint8_t* in = (const uint8_t*)raw_in;
uint8_t* out = (uint8_t*)raw_out;
uint32_t seed = password ^ 0xa612952cu;
for (size_t i = 0 ; i < len; ++i)
{
uint8_t a = ( in[i] ^ seed ) >> 3;
uint8_t b = ( ( ((uint32_t)in[i]) << 18 ) ^ seed ) >> (18-5);
a &= 31;
b &= 224;
a = 31 & ( a ^ (b << 3));
out[i] = a | b;
seed = ((seed ^ in[i]) * 7321 + in[i]);
}
return 0;
}
int decode(const void* raw_in, void* raw_out, uint32_t password, size_t len)
{
const uint8_t* in = (const uint8_t*)raw_in;
uint8_t* out = (uint8_t*)raw_out;
uint32_t seed = password ^ 0xa612952cu;
for (size_t i = 0 ; i < len; ++i)
{
// 请在此处补全代码
}
return 0;
}
int main()
{
const uint8_t buf1[] = {0x1d, 0xfd, 0x82, 0xea, 0x27, 0xb0, 0x7c, 0xb9, 0xd1, 0x96, 0xab, 0x1f, 0x30, 0x12, 0x59, 0x4d, 0xd6, 0x3d, 0x23, 0xc3, 0x89, 0x8b, 0xf8, 0xa6, 0xf4, 0x3a, 0xe3, 0x11, };
uint8_t buf2[100] = {};
const uint32_t password = 0xe71ee00cu;
const size_t len = sizeof(buf1);
decode(buf1, buf2, password, len);
printf("%s\n", buf2);
}