crcjava逆向代码,java逆向编程

如何把下面这段c语言的crc8加密写成java?

以下是我的分析,不知是否正确,你参考下

成都创新互联公司是一家专业的成都网站建设公司,我们专注成都网站建设、成都网站设计、网络营销、企业网站建设,友情链接1元广告为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。

1、首先来看你打java代码 :crc = (byte) ((crc 1) ^ 0x8c); 和 crc = (byte) (crc 1); 

导致这个问题是因为byte的最高位符号位,转换的时候就出错了

2、示例代码:

package com.test;

public class test {

public static void main(String[] args) {

byte[] ptr = { 1, 1, 1, 1, 1, 1 };

byte res = getCrc(ptr);

System.out.println();

System.out.println((byte)( (1  1) ^ 0x8c ) + ":" +( (1  1) ^ 0x8c ) );

}

public static byte getCrc(byte[] ptr) {

int crc = 0;

for (int i = 0; i  ptr.length; i++) {

crc ^= ptr[i];

for (int j = 0; j  8; j++) {

if ((crc  0x01) != 0) {

crc = (crc  1) ^ 0x8c;

} else {

crc = crc  1;

}

}

}

return (byte) crc;

}

}

把下面这段c语言的crc校验 转换成java的,麻烦了, 我是实在不会

unsigned short 都替换为int

unsigned int 也替换为int

unsigned char const *buf替换为byte[] buf

*buf++替换为buf[i]

将C语言版的CRC校验改为java代码写

short CityComGetCRC(final byte[] data,short length){

short crc=0,q;

short c,i;

for(i=0;ilength;i++){

c=data[i];

q=(crc^c)0x0f;

crc=(crc4)^(q*0x1081);

q=(crc^(c4))0xf0;

crc=(crc4)^(q*0x1081);

}

return crc;

}

用java编写一个获得CRC校验码的javabean

private static String mkCrc16(String str) {

CRC16 crc16 = new CRC16();

byte[] b = str.getBytes();

for (int i = 0; i b.length; i++)

crc16.update(b[i]);

return Integer.toHexString(crc16.value);

}

private static String mkCrc(String string) throws Exception {

CRC32 crc32 = new CRC32();

crc32.update(string.getBytes());

return Long.toHexString(crc32.getValue());

}

public class CRCUtil {

public static final int evalCRC16(byte[] data) {

int crc = 0xFFFF;

for (int i = 0; i data.length; i++) {

crc = (data[i] 8) ^ crc;

for (int j = 0; j 8; ++j)

if ((crc 0x8000) != 0)

crc = (crc 1) ^ 0x1021;

else

crc = 1;

}

return (crc ^ 0xFFFF) 0xFFFF;

}

}


名称栏目:crcjava逆向代码,java逆向编程
URL标题:http://hbruida.cn/article/dseoigo.html