更新时间:2018-11-22 15:44作者:李一老师
-- #include "stdint.h"
// 注:以上内容没有前面的“--”,做时去掉即可
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 ^ 0x42381238u;
for (size_t i = 0 ; i < len; ++i) {
uint8_t a = ( in[i] ^ seed ) >> 2;
uint8_t b = ( ( ((uint32_t)in[i]) << 10 ) ^ seed ) >> (10-6);
a &= 63;
b &= 192;
a = 63 & ( a ^ (b << 3));
out[i] = a | b;
seed = (((seed << 7) ^ seed ^ in[i]) + 48475829);
}
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 ^ 0x42381238u;
for (size_t i = 0 ; i < len; ++i) {