求助。。。测评题 搜狗测评题

summer_0123 2011-09-14 01:58:33
public class Test {


public static void encode(byte[] in, byte[] out, int password)
{
int len = in.length;

int seed = password ^ 0x6b3adbd0;
for (int i = 0 ; i < len; ++i) {
byte a = (byte)( ( in[i] ^ seed ) >>> 4 );
byte b = (byte)( ( ( ((int)in[i]) << 20 ) ^ seed ) >>> (20-4) );
a &= 0xf;
b &= 0xf0;
out[i] = (byte)(a | b);
seed = (seed * 608347 ^ seed ^ out[i]);
}
}


public static void decode(byte[] in, byte[] out, int password)
{
int len = in.length;

int seed = password ^ 0x6b3adbd0;
for (int i = 0 ; i < len; ++i) {
// fill the code here
}
}
public static void main(String [] args) throws Exception
{
int password = 0xc74b9c4e;
byte[] buf1 = {-126, 56, 63, 56, 84, -123, -89, 91, 65, -42, 106, -83, 61, 49, -8, 74, 42, -24, 113, -58, -40, -111, -57, 66, 91, -43, 11, -119, };
byte[] buf2 = new byte[buf1.length];
decode(buf1, buf2, password);
System.out.println(new String(buf2, "GBK"));
}


}
...全文
568 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
shupo 2011-10-08
  • 打赏
  • 举报
回复
路过,帮忙顶一下.
lockie 2011-10-08
  • 打赏
  • 举报
回复
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 ^ 0x2313906eu;
for (size_t i = 0 ; i < len; ++i) {
uint8_t a = ( in[i] ^ seed ) >> 4;
uint8_t b = ( ( ((uint32_t)in[i]) << 16 ) ^ seed ) >> (16-4);
a &= 15;
b &= 240;
a = 15 & ( a ^ (b << 3));
out[i] = a | b;
seed = (seed * 3687989 + out[i]);
}
}


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 ^ 0x2313906eu;
for (size_t i = 0 ; i < len; ++i) {
// 请在此处补全代码
}
}
int main()
{
const uint8_t buf1[] = {0x49, 0xf5, 0xbe, 0x49, 0x59, 0x9c, 0xb1, 0x34, 0xaa, 0xd3, 0x14, 0x13, 0x59, 0xc3, 0x08, 0x13, 0xa8, 0xee, 0x34, 0x79, 0x0a, 0x9b, 0x53, 0x3f, 0x9a, 0xa6, 0x09, 0x61, 0x22, 0x90, 0xc8, 0x8b, 0x31, 0x1e, 0x09, 0xae, 0x44, 0x12, 0x40, 0x39, };
uint8_t buf2[100] = {};
const uint32_t password = 0xd4f3ee2bu;
const size_t len = sizeof(buf1);
decode(buf1, buf2, password, len);
printf("%s\n", buf2);
}



qybao 2011-09-14
  • 打赏
  • 举报
回复
这个网就只有一种评测题? 杯具啊,回复了N遍了

http://topic.csdn.net/u/20110914/12/1647d6d1-2fbe-4c3f-9d47-f2c6959a5132.html

public static void decode(byte[] in, byte[] out, int password) {  
int len = in.length;

int seed = password ^ 0x6b3adbd0;
for (int i = 0 ; i < len; ++i) {
byte a = (byte)(in[i] & 0xf);
byte b = (byte)(in[i] & 0xf0);
a = (byte)(((a << 4) ^ seed) & 0xf0);
b = (byte)((((((int)b) << (20-4)) ^ seed) >> 20) & 0xf);
out[i] = (byte)(a | b);
seed = (seed * 608347 ^ seed ^ in[i]);
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧