导航:首页 > 源码编译 > java和校验算法

java和校验算法

发布时间:2024-01-08 14:50:33

java里如何正确计算检验和

importjava.security.MessageDigest;

publicclassMD5HashingExample
{
publicstaticvoidmain(String[]args)throwsException
{
Stringpassword="123456";

MessageDigestmd=MessageDigest.getInstance("MD5");
md.update(password.getBytes("UTF-8"));//orGBK

bytebyteData[]=md.digest();

//
StringBuffersb=newStringBuffer();
for(inti=0;i<byteData.length;i++){
sb.append(Integer.toString((byteData[i]&0xff)+0x100,16).substring(1));
}

System.out.println("Digest(inhexformat)::"+sb.toString());

//
StringBufferhexString=newStringBuffer();
for(inti=0;i<byteData.length;i++){
Stringhex=Integer.toHexString(0xff&byteData[i]);
if(hex.length()==1)hexString.append('0');
hexString.append(hex);
}
System.out.println("Digest(inhexformat)::"+hexString.toString());
}
}

⑵ java 实现crc16校验算法的问题

貌似CRC算法循环求余时减法是不带借位的。

⑶ 怎样用java定义方法实现luhn算法

import java.util.Scanner;

//信用卡号校验算法
public class Luhn {
public static void main(String[] args) {
System.out.println("Please input your credit card number:");
Scanner input = new Scanner(System.in);
int sumOdd = 0;
int sumEven = 0;
String number = input.next();
int length = number.length();
int[] wei = new int[length];
for (int i = 0; i < number.length(); i++) {
wei[i] = Integer.parseInt(number.substring(length - i - 1, length
- i));// 从最末一位开始提取,每一位上的数值
System.out.println("第" + i + "位数字是散罩:" + wei[i]);
}
for (int i = 0; i < length / 2; i++) {
sumOdd += wei[2 * i];
if ((wei[2 * i + 1] * 2) > 9)
wei[2 * i + 1] = wei[2 * i + 1] * 2 - 9;
else
wei[2 * i + 1] *= 2;
sumEven += wei[2 * i + 1];
}
System.out.println("奇数位的和敬掘衡是亮做:" + sumOdd);
System.out.println("偶数位的和是:" + sumEven);
if ((sumOdd + sumEven) % 10 == 0)
System.out.println("Recept.");
else
System.out.println("Can not recept.");
}
}

运行结果:

Please input your credit card number:
5432123456788881
第0位数字是:1
第1位数字是:8
第2位数字是:8
第3位数字是:8
第4位数字是:8
第5位数字是:7
第6位数字是:6
第7位数字是:5
第8位数字是:4
第9位数字是:3
第10位数字是:2
第11位数字是:1
第12位数字是:2
第13位数字是:3
第14位数字是:4
第15位数字是:5
奇数位的和是:35
偶数位的和是:35
Recept.

⑷ java中CRC算法是个什么东东

CRC算法实现有2种方法,一、查表法,二、直接计算,查表法的计算速度相对来说比较快,本人介绍的方法是直接计算法,用了2种方法实现,都是面向对象进行算法的封装。
package com.wms.serial;

/**
* @author lino
* @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)));
//再把这个2f49替换成b数组的最后两个字节的数组,生成一个新的数组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))); //算出来是 0

//你可以自已构造一些byte进行加解密试试
}

public short encode(byte[] b){
short CRC_x = 0;
int pp = 65536; // 1<<16;
int pp2 = 69665; // (1<<16) + (1<<12) + (1<<5) + 1
for(int i=0;i<b.length;i++){
for(int j=0;j<8;j++){
CRC_x = (short)((CRC_x<<1) + (((b[i]<<j)&0x80)>>7));
if((CRC_x/pp) == 1){
CRC_x=(short)(CRC_x^pp2);
}
}
}
return CRC_x;
}
}

⑸ java 程序怎么计算.hex文件校验和

JAVA 读进来,一样相加

int n=0xff&(0x01 +~(0x02 + 00 + 00 + 0x02 + 0x12 + 00));
String a=Integer.toHexString(n);
System.out.println(a);

⑹ 求java识别三角形,圆形,方形的具体算法和原理。

首先图片的背景和图形的颜色肯定是不一样的,图片是由像素组成的(这个概念很重要),,第一步区分背景和图形的颜色,保存背景的颜色,,第二步创建一个二维数组,这个二维数组对应于这个图片,你比如说,我这个图片是10*10大小的,然后我就把我这个数组保存是100*100的,即每隔0.1我取一下图片的像素值,判断这个像素值和背景是否一样,如果一样,那么数组的对应位置就存储0,否则存储1,,,第三步,通过Java代码控制鼠标遍历图片,一行一行的遍历,取像素值,与背景的像素对比,存入数组,遍历之后二维数组就只是存储的0和1(0代表背景,1代表图形),,第四步,把所有为1的二维数组元素对应的坐标取出来,写个方法判断一下,相当于数轴知道X和Y了,你判断一下图形的形状,应该不难。。。而且图形就三个,,不难实现,,楼主可以试试

阅读全文

与java和校验算法相关的资料

热点内容
任我充app怎么开发票 浏览:330
人工智能与编程语言 浏览:406
linux网络编程服务器 浏览:800
海尔32cw空调压缩机电容多大 浏览:747
分区加密了该怎么办 浏览:103
索尼延时拍摄app怎么导入 浏览:226
冰箱冷冻坏了压缩机一直响 浏览:807
windows服务器如何组建raid0 浏览:180
橡胶压缩空气管 浏览:556
如果出现编译错误如何解决 浏览:924
程序员饰品 浏览:430
什么叫网站服务器站点 浏览:686
java转义字符双引号 浏览:779
网上考场的app怎么看真假 浏览:644
四层电梯的plc编程 浏览:899
程序员的职场 浏览:662
圆形平面怎么编程 浏览:67
python开源代码下载 浏览:661
如何连接局域网宽带连接服务器地址 浏览:171
华为应用王者荣耀方舟编译器 浏览:935