導航:首頁 > 源碼編譯 > 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和校驗演算法相關的資料

熱點內容
漢語詞典pdf下載 瀏覽:351
android公網ip 瀏覽:611
要塞1地圖放哪個文件夾 瀏覽:848
凡科建站怎麼弄伺服器 瀏覽:939
蘋果手機怎麼設置app播放 瀏覽:202
下載網站源碼用什麼瀏覽器 瀏覽:241
六線譜pdf 瀏覽:156
linuxmysqlsock 瀏覽:239
人教版數學pdf下載 瀏覽:460
文檔安全加密系統 瀏覽:491
數控銑床編程簡單數字 瀏覽:788
編程電纜如何重啟 瀏覽:121
myqq命令行發消息 瀏覽:365
日產逍客怎麼使用app升窗 瀏覽:503
安卓系統怎麼快速刪除微信內容 瀏覽:653
csharppython 瀏覽:409
程序員脖子按摩儀 瀏覽:563
小米桌面文件夾亂碼怎麼回事 瀏覽:858
點歌台app怎麼連接 瀏覽:318
大學電腦編程學什麼好 瀏覽:348