搜狗笔试真题

招聘笔试题2018-11-22李天扬老师

  -- #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) {

相关推荐

猜你喜欢

大家正在看

换一换