新聞中心
如何把下面這段c語言的crc8加密寫成java?
以下是我的分析,不知是否正確,你參考下
成都創(chuàng)新互聯(lián)公司是一家專業(yè)的成都網(wǎng)站建設公司,我們專注成都網(wǎng)站建設、成都網(wǎng)站設計、網(wǎng)絡營銷、企業(yè)網(wǎng)站建設,友情鏈接,1元廣告為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結構的規(guī)劃UI設計到用戶體驗提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
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://fisionsoft.com.cn/article/dseoigo.html