如何把下面这段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逆向编程
路径分享:http://scyingshan.cn/article/dseoigo.html