Advertisement
Guest User

cek CRC

a guest
Dec 12th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.00 KB | None | 0 0
  1. public static boolean isQRISValid(String qrdata) {
  2.         //checsum 4 digit ascii
  3.         if (qrdata != null && qrdata.length() > 4) {
  4.             String qrDataNonCRC = qrdata.substring(0, qrdata.length() - 4);
  5.             String qrCRC = qrdata.substring(qrdata.length()-4).toUpperCase();
  6.            
  7.             if (qrDataNonCRC.startsWith("00") && qrCRC.equals(checkCRC(qrDataNonCRC.getBytes()))) {
  8.                 return true;
  9.             }
  10.         }
  11.         return false;
  12.     }
  13.    
  14.     public static String checkCRC(byte []bytes) {
  15.         int crc = 0xFFFF;
  16.         int polynomial = 0x1021;
  17.         String sCRC = "";
  18.        
  19.         for (byte b : bytes) {
  20.             for (int i = 0; i < 8; i++) {
  21.                 boolean bit = ((b   >> (7-i) & 1) == 1);
  22.                 boolean c15 = ((crc >> 15    & 1) == 1);
  23.                 crc <<= 1;
  24.                 if (c15 ^ bit) crc ^= polynomial;
  25.             }
  26.         }
  27.         crc &= 0xffff;
  28.        
  29.         sCRC = Integer.toHexString(crc).toUpperCase();
  30.         System.out.println("CRC16-CCITT = " + sCRC);
  31.         return sCRC;
  32.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement