导航:首页 > 编程语言 > crc8java

crc8java

发布时间:2022-10-11 06:04:19

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

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

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

packagecom.test;

publicclasstest{

publicstaticvoidmain(String[]args){
byte[]ptr={1,1,1,1,1,1};
byteres=getCrc(ptr);
System.out.println();
System.out.println((byte)((1>>1)^0x8c)+":"+((1>>1)^0x8c));
}

publicstaticbytegetCrc(byte[]ptr){
intcrc=0;
for(inti=0;i<ptr.length;i++){
crc^=ptr[i];
for(intj=0;j<8;j++){
if((crc&0x01)!=0){
crc=(crc>>1)^0x8c;
}else{
crc=crc>>1;
}
}
}
return(byte)crc;
}
}


2. java的crc8校验,按指定多项式,求助

以下是我的分析,不知是否正确,你参考下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 > 1) ^ 0x8c;} else {crc = crc >> 1;}}}return (byte) crc;}}

3. 如何用java实现一个加密算法(现有的这个是C写的,想要一个java的)菜鸟一个,求高手帮忙····

import java.io.*; //引入io包
public class TxtEncrypt
{
public static void main(String args[ ]) //主函数
{
System.out.println("输入一个字符作为密钥:");
char key = System.in.read();//等待用户输入一个字符作为密钥
File fileOne=new File("hello.txt"), //要加密的文件
fileTwo=new File("hello.secret");//加密后的文件
char b[]=new char[100]; //缓冲字符数组
try{
FileReader in=new FileReader(fileOne); //创建读文件流,也可以叫文件输入流
FileWriter out=new FileWriter(fileTwo); //创建写文件流,也可以叫文件输出流
int n=-1; //定义变量,存放read读的返回值
while((n=in.read(b))!=-1) //如果变量n为-1,则文件到达末尾
{
for(int i=0;i<n;i++) //循环,从字符数组b中读取字符
{
b[i]=(char)(b[i]^key); //加密,讲字符数组b中的每个字符跟a异或,然后放入b中
}
out.write(b,0,n); //然后把b中的所有字符写入到writer流中,也就是hello.secret文件中
}
out.close(); //读完之后,关闭输出流
in=new FileReader(fileTwo); //创建hello.secret文件的读文件流
System.out.println("加密后的文件内容:"); //输出字符串
while((n=in.read(b))!=-1) //当文件没有到达末尾,一直执行下面的循环体
{
String str=new String(b,0,n); //把b中的字符放入字符串变量str中
System.out.println(str); //输出str中的值 (整个循环的意思是把加密后的文件输出到屏幕上)
}
in=new FileReader(fileTwo); //创建hello.secret文件的读文件流
System.out.println("解密后的文件内容:"); //输出字符串
while((n=in.read(b))!=-1) //当文件没有到达末尾,一直执行下面的循环体
{
for(int i=0;i<n;i++) //for循环
{
b[i]=(char)(b[i]^key); //把b字符数组中的每个字符跟a异或(同一个字符异或两次之后,得到原来的字符)
}
System.out.println(new String(b,0,n)); //输出b中的所有字符
}
in.close(); //关闭输入流
}
catch(IOException e)
{
System.out.println(e); //捕获io异常
}
}
}

4. 求java的 crc8算法方法

你的意思就翻译一下,是吗:
static char crc8fun ( char in, char prest)
{
int loop;
char out;
char crc_pol=0xb8; /*多项式*/
out = in^prest;
for(loop=0;loop<8;loop++){
if(out&0x01){
out=(out>>1)^crc_pol;
}else{
out=(out>>1);
}
return out;
}
}

5. 怎么用java实现crc8校验

查一下API 有类可以直接调用

6. 如何用java实现CRC8验证算法

/*http://www.koders.com/java/.aspx?s=Address#L34
*---------------------------------------------------------------------------
* Copyright (C) 1999,2000 Dallas Semiconctor Corporation, All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, , modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above right notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES
* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Except as contained in this notice, the name of Dallas Semiconctor
* shall not be used except as stated in the Dallas Semiconctor
* Branding Policy.
*---------------------------------------------------------------------------
*/

package com.dalsemi.onewire.utils;

/**
* CRC8 is a class to contain an implementation of the
* Cyclic-Rendency-Check CRC8 for the iButton. The CRC8 is used
* in the 1-Wire Network address of all iButtons and 1-Wire
* devices.
* <p>
* CRC8 is based on the polynomial = X^8 + X^5 + X^4 + 1.
*
* @version 0.00, 28 Aug 2000
* @author DS
*
*/
public class CRC8
{

//--------
//-------- Variables
//--------

/**
* CRC 8 lookup table
*/
private static byte dscrc_table [];

/*
* Create the lookup table
*/
static
{

//Translated from the assembly code in iButton Standards, page 129.
dscrc_table = new byte [256];

int acc;
int crc;

for (int i = 0; i < 256; i++)
{
acc = i;
crc = 0;

for (int j = 0; j < 8; j++)
{
if (((acc ^ crc) & 0x01) == 0x01)
{
crc = ((crc ^ 0x18) >> 1) | 0x80;
}
else
crc = crc >> 1;

acc = acc >> 1;
}

dscrc_table [i] = ( byte ) crc;
}
}

//--------
//-------- Constructor
//--------

/**
* Private constructor to prevent instantiation.
*/
private CRC8 ()
{
}

//--------
//-------- Methods
//--------

/**
* Perform the CRC8 on the data element based on the provided seed.
* <p>
* CRC8 is based on the polynomial = X^8 + X^5 + X^4 + 1.
*
* @param dataToCrc data element on which to perform the CRC8
* @param seed seed the CRC8 with this value
* @return CRC8 value
*/
public static int compute (int dataToCRC, int seed)
{
return (dscrc_table [(seed ^ dataToCRC) & 0x0FF] & 0x0FF);
}

/**
* Perform the CRC8 on the data element based on a zero seed.
* <p>
* CRC8 is based on the polynomial = X^8 + X^5 + X^4 + 1.
*
* @param dataToCrc data element on which to perform the CRC8
* @return CRC8 value
*/
public static int compute (int dataToCRC)
{
return (dscrc_table [dataToCRC & 0x0FF] & 0x0FF);
}

/**
* Perform the CRC8 on an array of data elements based on a
* zero seed.
* <p>
* CRC8 is based on the polynomial = X^8 + X^5 + X^4 + 1.
*
* @param dataToCrc array of data elements on which to perform the CRC8
* @return CRC8 value
*/
public static int compute (byte dataToCrc [])
{
return compute(dataToCrc, 0, dataToCrc.length);
}

/**
* Perform the CRC8 on an array of data elements based on a
* zero seed.
* <p>
* CRC8 is based on the polynomial = X^8 + X^5 + X^4 + 1.
*
* @param dataToCrc array of data elements on which to perform the CRC8
* @param off offset into array
* @param len length of data to crc
* @return CRC8 value
*/
public static int compute (byte dataToCrc [], int off, int len)
{
return compute(dataToCrc, off, len, 0);
}

/**
* Perform the CRC8 on an array of data elements based on the
* provided seed.
* <p>
* CRC8 is based on the polynomial = X^8 + X^5 + X^4 + 1.
*
* @param dataToCrc array of data elements on which to perform the CRC8
* @param off offset into array
* @param len length of data to crc
* @param seed seed to use for CRC8
* @return CRC8 value
*/
public static int compute (byte dataToCrc [], int off, int len, int seed)
{

// loop to do the crc on each data element
int CRC8 = seed;

for (int i = 0; i < len; i++)
CRC8 = dscrc_table [(CRC8 ^ dataToCrc [i + off]) & 0x0FF];

return (CRC8 & 0x0FF);
}

/**
* Perform the CRC8 on an array of data elements based on the
* provided seed.
* <p>
* CRC8 is based on the polynomial = X^8 + X^5 + X^4 + 1.
*
* @param dataToCrc array of data elements on which to perform the CRC8
* @param seed seed to use for CRC8
* @return CRC8 value
*/
public static int compute (byte dataToCrc [], int seed)
{
return compute(dataToCrc, 0, dataToCrc.length, seed);
}
}

阅读全文

与crc8java相关的资料

热点内容
安卓手机如何录制视频长时间 浏览:283
安全问题app哪个好 浏览:445
压缩水会变冰吗 浏览:526
小说配音app哪个靠谱 浏览:820
编译iso 浏览:944
照片生成pdf格式 浏览:194
病历转pdf 浏览:835
云服务器配硬件 浏览:978
服务器10k什么意思 浏览:21
pdfeditor汉化 浏览:884
新科学pdf 浏览:746
现在还有c语言编译吗 浏览:675
哪里买到单片机 浏览:480
linux文件打开数量 浏览:510
编译原理中什么是l属性文法 浏览:372
硬盘加密时出现的问题 浏览:61
如何退域命令 浏览:108
看书的app哪里看 浏览:291
服务器怎么调大 浏览:3
android天气apijson 浏览:984