33 lines
1,000 B
JavaScript
33 lines
1,000 B
JavaScript
export function crc32(str) {
|
|
var crcTable = [];
|
|
for (var i = 0; i < 256; i++) {
|
|
var crc = i;
|
|
for (var j = 8; j > 0; j--) {
|
|
if (crc & 1) {
|
|
crc = (crc >>> 1) ^ 0xEDB88320;
|
|
} else {
|
|
crc = crc >>> 1;
|
|
}
|
|
}
|
|
crcTable[i] = crc;
|
|
}
|
|
|
|
var crc32val = 0xFFFFFFFF;
|
|
for (var i = 0; i < str.length; i++) {
|
|
var charCode = str.charCodeAt(i);
|
|
crc32val = (crc32val >>> 8) ^ crcTable[(crc32val ^ charCode) & 0xFF];
|
|
}
|
|
|
|
return (crc32val ^ 0xFFFFFFFF) >>> 0;
|
|
}
|
|
|
|
export function randomCrc32String(length = 8) {
|
|
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
var randomStr = '';
|
|
for (var i = 0; i < length; i++) {
|
|
randomStr += characters.charAt(Math.floor(Math.random() * characters.length));
|
|
}
|
|
return crc32(randomStr).toString(16); // Convert to hexadecimal string
|
|
}
|
|
|
|
console.log(randomCrc32String()); // Example usage
|