Hi, I'm trying to change default aes key on keyNo = 0, to a different aes key. However, I keep getting
static crc32 = (input) => {
const crcTable = new Array(256);
for (let i = 0; i < 256; i++) {
let c = i;
for (let j = 0; j < 8; j++) {
c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
}
crcTable[i] = c >>> 0;
}
let crc = 0 ^ (-1);
for (let i = 0; i < input.length; i++) {
crc = (crc >>> ^ crcTable[(crc ^ input.charCodeAt(i)) & 0xFF];
}
crc = crc ^ (-1);
// Convert the integer to an array of bytes
const crcBytes = []; for (let i = 0; i < 4; i++) {
crcBytes.push((crc >>> (i * 8)) & 0xFF);
}
return crcBytes.reverse();
}
From my understanding, CRC is calculated on Cmd + keyNo + (newKey xor oldkey) + keyversion. Something like this.
let data_to_crc = cmd.concat(_keyNo).concat(_newKey).concat(_keyVersion);
let data_to_crc_string = DesfireUtils.getHexFromDecArray(data_to_crc);
let crc_data = DesfireUtils.crc32(data_to_crc_string);
Solved! Go to Solution.