真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

CRC加解密java代碼,crc加密能解密嗎

如何把下面這段c語(yǔ)言的crc8加密寫(xiě)成java?

以下是我的分析,不知是否正確,你參考下

萬(wàn)安ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!

1、首先來(lái)看你打java代碼 :crc = (byte) ((crc 1) ^ 0x8c); 和?crc = (byte) (crc 1);?

導(dǎo)致這個(gè)問(wèn)題是因?yàn)閎yte的最高位符號(hào)位,轉(zhuǎn)換的時(shí)候就出錯(cuò)了

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;

}

}

java中CRC算法是個(gè)什么東東

CRC算法實(shí)現(xiàn)有2種方法,一、查表法,二、直接計(jì)算,查表法的計(jì)算速度相對(duì)來(lái)說(shuō)比較快,本人介紹的方法是直接計(jì)算法,用了2種方法實(shí)現(xiàn),都是面向?qū)ο筮M(jìn)行算法的封裝。

package com.wms.serial;

/**

* @author linduo

* @version 2006/08/25

*/

public class CRC16{

public int value;

public CRC16()

{

value = 0;

}

/** update CRC with byte b */

public void update(byte aByte)

{

int a, b;

a = (int) aByte;

for (int count = 7; count =0; count--) {

a = a 1;

b = (a 8) 1;

if ((value 0x8000) != 0) {

value = ((value 1) + b) ^ 0x1021;

} else {

value = (value 1) + b;

}

}

value = value 0xffff;

return;

}

/** reset CRC value to 0 */

public void reset()

{

value = 0;

}

public int getValue()

{

return value;

}

public static void main(String[] args) {

CRC16 crc16 = new CRC16();

byte[] b = new byte[]{

//(byte) 0xF0,(byte)0xF0,(byte)0xF0,(byte)0x72

(byte) 0x2C,(byte)0x00,(byte)0xFF,(byte)0xFE

,(byte) 0xFE,(byte)0x04,(byte)0x00,(byte)0x00

,(byte) 0x00,(byte)0x00

};

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

{

crc16.update(b[k]);

}

System.out.println(Integer.toHexString(crc16.getValue()));

System.out.println(Integer.toHexString(b.length));

}

}

package com.wms.serial;

public class CRC162 {

public static final void main(String[] args){

CRC162 crc16 = new CRC162();

byte[] b = new byte[]{

//(byte) 0xF0,(byte)0xF0,(byte)0xF0,(byte)0x72

(byte) 0x2C,(byte)0x00,(byte)0xFF,(byte)0xFE

,(byte) 0xFE,(byte)0x04,(byte)0x00,(byte)0x00

,(byte) 0x00,(byte)0x00

};

System.out.println(Integer.toHexString(crc16.encode(b)));

//再把這個(gè)2f49替換成b數(shù)組的最后兩個(gè)字節(jié)的數(shù)組,生成一個(gè)新的數(shù)組b2

byte[] b2 = new byte[]{

//(byte) 0xF0,(byte)0xF0,(byte)0xF0,(byte)0x72

(byte) 0x2C,(byte)0x00,(byte)0xFF,(byte)0xFE

,(byte) 0xFE,(byte)0x04,(byte)0x00,(byte)0x00

,(byte) 0x2f,(byte)0x49

};

System.out.println(Integer.toHexString(crc16.encode(b2))); //算出來(lái)是 0

//你可以自已構(gòu)造一些byte進(jìn)行加解密試試

}

public short encode(byte[] b){

short CRC_x = 0;

int pp = 65536; // 116;

int pp2 = 69665; // (116) + (112) + (15) + 1

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

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

CRC_x = (short)((CRC_x1) + (((b[i]j)0x80)7));

if((CRC_x/pp) == 1){

CRC_x=(short)(CRC_x^pp2);

}

}

}

return CRC_x;

}

}

用java編寫(xiě)一個(gè)獲得CRC校驗(yàn)碼的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;

}

}

將C語(yǔ)言版的CRC校驗(yàn)改為java代碼寫(xiě)

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;

}


分享文章:CRC加解密java代碼,crc加密能解密嗎
轉(zhuǎn)載源于:http://weahome.cn/article/hopshg.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部