ນີ້ແມ່ນຄໍາສັ່ງ cksumposix ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
cksum — ຂຽນ checksums ໄຟລ໌ ແລະຂະຫນາດ
ສະຫຼຸບສັງລວມ
cksum [ເອກະສານ...]
ລາຍລະອຽດ
ໄດ້ cksum ຜົນປະໂຫຍດຈະຕ້ອງຄິດໄລ່ແລະຂຽນໃສ່ຜົນໄດ້ຮັບມາດຕະຖານການກວດສອບການຊ້ໍາຊ້ອນຮອບວຽນ
(CRC) ສໍາລັບແຕ່ລະໄຟລ໌ປ້ອນຂໍ້ມູນ, ແລະຍັງຂຽນໃສ່ຜົນໄດ້ຮັບມາດຕະຖານຈໍານວນຂອງ octets ໃນແຕ່ລະ
ໄຟລ໌. CRC ທີ່ໃຊ້ແມ່ນອີງໃສ່ polynomial ທີ່ໃຊ້ສໍາລັບການກວດສອບຄວາມຜິດພາດ CRC ໃນ
ມາດຕະຖານ ISO/IEC 8802-3:1996 (ອີເທີເນັດ).
ການເຂົ້າລະຫັດສໍາລັບ checksum CRC ແມ່ນຖືກກໍານົດໂດຍການສ້າງ polynomial:
G(x)=x32 +x26 +x23 +x22 +x16 +x12 +x11 +x10 +x8+x7+x5+x4+x2+x+1
ໃນທາງຄະນິດສາດ, ຄ່າ CRC ທີ່ສອດຄ້ອງກັບໄຟລ໌ທີ່ໃຫ້ມາຈະຖືກກໍານົດໂດຍ
ຂັ້ນຕອນການດັ່ງຕໍ່ໄປນີ້:
1. ໄດ້ n bits ທີ່ຈະປະເມີນແມ່ນຖືວ່າເປັນຄ່າສໍາປະສິດຂອງ mod 2 polynomial
M(x) ຂອງລະດັບ n−1. ເຫຼົ່ານີ້ n bits ແມ່ນ bits ຈາກໄຟລ໌, ມີຫຼາຍທີ່ສຸດ
ບິດທີ່ສໍາຄັນເປັນບິດທີ່ສໍາຄັນທີ່ສຸດຂອງ octet ທໍາອິດຂອງໄຟລ໌ແລະ
ບິດສຸດທ້າຍເປັນບິດທີ່ສຳຄັນໜ້ອຍສຸດຂອງ octet ສຸດທ້າຍ, padded ກັບສູນ bits (ຖ້າ
ມີຄວາມຈໍາເປັນ) ເພື່ອບັນລຸຈໍານວນ octets ປະສົມປະສານ, ຕິດຕາມດ້ວຍຫນຶ່ງຫຼືຫຼາຍ octets
ເປັນຕົວແທນຂອງຄວາມຍາວຂອງໄຟລ໌ເປັນຄ່າສອງ, octet ທີ່ສໍາຄັນຫນ້ອຍທໍາອິດ.
ຈຳນວນ octets ນ້ອຍທີ່ສຸດທີ່ສາມາດເປັນຕົວແທນຈຳນວນເຕັມນີ້ຈະຖືກໃຊ້.
2. M(x) ແມ່ນຄູນດ້ວຍ x32 (ນັ້ນແມ່ນ, shifted left 32 bits) ແລະແບ່ງອອກໂດຍ G(x) ການ ນຳ ໃຊ້
mod 2 ພະແນກ, ການຜະລິດສ່ວນທີ່ເຫຼືອ R(x) ຂອງ degree ≤ 31 .
3. ຄ່າສໍາປະສິດຂອງ R(x) ຖືກພິຈາລະນາເປັນລໍາດັບ 32-bit.
4. ລໍາດັບບິດໄດ້ຖືກປະກອບແລະຜົນໄດ້ຮັບແມ່ນ CRC.
OPTIONS
ບໍ່ມີ.
ດໍາເນີນງານ
operand ຕໍ່ໄປນີ້ຈະໄດ້ຮັບການສະຫນັບສະຫນູນ:
ເອກະສານ ຊື່ເສັ້ນທາງຂອງໄຟລ໌ທີ່ຈະກວດສອບ. ຖ້າບໍ່ມີ ເອກະສານ operands ແມ່ນລະບຸໄວ້, ໄດ້
ວັດສະດຸປ້ອນມາດຕະຖານຈະຖືກໃຊ້.
STDIN
ການປ້ອນຂໍ້ມູນມາດຕະຖານຈະຖືກໃຊ້ຖ້າບໍ່ມີ ເອກະສານ operands ຖືກກໍານົດ, ແລະຈະຖືກນໍາໃຊ້ຖ້າຫາກວ່າ a
ເອກະສານ operand ແມ່ນ '−' ແລະການປະຕິບັດການປິ່ນປົວ '−' ເປັນການປ້ອນຂໍ້ມູນມາດຕະຖານ.
ຖ້າບໍ່ດັ່ງນັ້ນ, ວັດສະດຸປ້ອນມາດຕະຖານຈະບໍ່ຖືກໃຊ້. ເບິ່ງພາກສ່ວນ INPUT FILES.
ປັດໄຈນໍາເຂົ້າ ເອກະສານ
ໄຟລ໌ປ້ອນຂໍ້ມູນສາມາດເປັນໄຟລ໌ປະເພດໃດກໍໄດ້.
ENVIRONMENT ຄວາມຮັບຜິດຊອບ
ຕົວແປສະພາບແວດລ້ອມຕໍ່ໄປນີ້ຈະສົ່ງຜົນກະທົບຕໍ່ການປະຕິບັດ cksum:
ພາສາ ໃຫ້ຄ່າເລີ່ມຕົ້ນສໍາລັບຕົວແປສາກົນທີ່ບໍ່ໄດ້ຕັ້ງ ຫຼື
null. (ເບິ່ງປະລິມານຄໍານິຍາມພື້ນຖານຂອງ POSIX.1-2008, ສ່ວນ 8.2,
Internationalization Variables ເພື່ອຄວາມກ້າວໜ້າຂອງການຫັນເປັນສາກົນ
ຕົວແປທີ່ໃຊ້ເພື່ອກໍານົດຄ່າຂອງປະເພດທ້ອງຖິ່ນ.)
LC_ALL ຖ້າຕັ້ງເປັນຄ່າສະຕຣິງທີ່ບໍ່ຫວ່າງເປົ່າ, ລົບລ້າງຄ່າຂອງອັນອື່ນທັງໝົດ
ຕົວແປສາກົນ.
LC_CTYPE ກໍານົດທ້ອງຖິ່ນສໍາລັບການຕີຄວາມລໍາດັບຂອງ bytes ຂອງຂໍ້ມູນຂໍ້ຄວາມ
ເປັນຕົວອັກສອນ (ຕົວຢ່າງ, single-byte ກົງກັນຂ້າມກັບ multi-byte ຕົວອັກສອນໃນ
ການໂຕ້ຖຽງ).
LC_MESSAGES
ກໍານົດທ້ອງຖິ່ນທີ່ຄວນຈະຖືກນໍາໃຊ້ເພື່ອຜົນກະທົບຕໍ່ຮູບແບບແລະເນື້ອໃນຂອງ
ຂໍ້ຄວາມການວິນິໄສທີ່ຂຽນເປັນຄວາມຜິດພາດມາດຕະຖານ.
NLSPATH ກໍານົດສະຖານທີ່ຂອງລາຍການຂໍ້ຄວາມສໍາລັບການປະມວນຜົນຂອງ LC_MESSAGES.
ASYNCHRONOUS ເຫດການ
ເລີ່ມຕົ້ນ.
STDOUT
ສໍາລັບແຕ່ລະໄຟລ໌ທີ່ປະຕິບັດຢ່າງສໍາເລັດຜົນ, ໄດ້ cksum ຜົນປະໂຫຍດຈະຕ້ອງຂຽນຕໍ່ໄປນີ້
ຮູບແບບ:
"%u %d %s\n", <Checkum>,# of ໄບຕ໌>,ຊື່ເສັ້ນທາງ>
ຖ້າບໍ່ ເອກະສານ operand ໄດ້ລະບຸໄວ້, ຊື່ເສັ້ນທາງແລະນໍາຫນ້າຂອງຕົນ ຈະຖືກລະເວັ້ນ.
ສະດຸດ
ຄວາມຜິດພາດມາດຕະຖານຈະຖືກນໍາໃຊ້ສໍາລັບຂໍ້ຄວາມວິນິດໄສເທົ່ານັ້ນ.
OUTPUT ເອກະສານ
ບໍ່ມີ.
ອະທິບາຍ ລາຍລະອຽດ
ບໍ່ມີ.
ອອກ STATUS
ຄ່າທາງອອກຕໍ່ໄປນີ້ຈະຖືກສົ່ງຄືນ:
0 ໄຟລ໌ທັງໝົດໄດ້ຖືກປະມວນຜົນສຳເລັດແລ້ວ.
>0 ເກີດຄວາມຜິດພາດຂຶ້ນ.
ຂໍ້ສັງເກດ OF ຄວາມຜິດພາດ
ເລີ່ມຕົ້ນ.
ໄດ້ ດັ່ງຕໍ່ໄປນີ້ ພາກສ່ວນ ມີ ຂໍ້ມູນ.
ຄໍາຮ້ອງສະຫມັກ ການນໍາໃຊ້
ໄດ້ cksum ຜົນປະໂຫຍດໂດຍທົ່ວໄປແມ່ນຖືກນໍາໃຊ້ເພື່ອປຽບທຽບໄຟລ໌ທີ່ສົງໃສກັບຜູ້ທີ່ເຊື່ອຖືໄດ້ຢ່າງໄວວາ
ຮຸ່ນດຽວກັນ, ເຊັ່ນ: ເພື່ອຮັບປະກັນວ່າໄຟລ໌ທີ່ຖືກສົ່ງຜ່ານສື່ທີ່ມີສຽງດັງມາຮອດ
intact. ຢ່າງໃດກໍ່ຕາມ, ການປຽບທຽບນີ້ບໍ່ສາມາດຖືກພິຈາລະນາເປັນ cryptographically ປອດໄພ. ໄດ້
ໂອກາດຂອງໄຟລ໌ເສຍຫາຍທີ່ຜະລິດ CRC ດຽວກັນກັບຕົ້ນສະບັບແມ່ນມີຫນ້ອຍ; ໂດຍເຈດຕະນາ
ການຫຼອກລວງແມ່ນມີຄວາມຫຍຸ້ງຍາກ, ແຕ່ອາດຈະບໍ່ເປັນໄປບໍ່ໄດ້.
ເຖິງແມ່ນວ່າການປ້ອນໄຟລ໌ໄປຫາ cksum ສາມາດເປັນປະເພດໃດກໍ່ຕາມ, ຜົນໄດ້ຮັບບໍ່ຈໍາເປັນຕ້ອງເປັນສິ່ງທີ່ຈະເປັນ
ຄາດວ່າຈະຢູ່ໃນໄຟລ໌ອຸປະກອນພິເສດຕົວອັກສອນ ຫຼືຢູ່ໃນປະເພດໄຟລ໌ທີ່ບໍ່ໄດ້ອະທິບາຍໂດຍລະບົບ
ປະລິມານສ່ວນຕິດຕໍ່ຂອງ POSIX.1-2008. ເນື່ອງຈາກວ່າປະລິມານຂອງ POSIX.1-2008 ນີ້ບໍ່ໄດ້ລະບຸ
ຂະຫນາດຕັນທີ່ນໍາໃຊ້ໃນເວລາທີ່ການປ້ອນຂໍ້ມູນ, checksums ຂອງໄຟລ໌ພິເສດຂອງຕົວອັກສອນບໍ່ຈໍາເປັນຕ້ອງປຸງແຕ່ງ
ຂໍ້ມູນທັງໝົດໃນໄຟລ໌ເຫຼົ່ານັ້ນ.
ສູດການຄິດໄລ່ແມ່ນສະແດງອອກໃນແງ່ຂອງ bitstream ແບ່ງອອກເປັນ octets. ຖ້າໄຟລ໌ແມ່ນ
ຖ່າຍທອດລະຫວ່າງສອງລະບົບ ແລະຜ່ານການປ່ຽນຂໍ້ມູນໃດໆກໍຕາມ (ເຊັ່ນ: ການປ່ຽນແປງ
little-endian byte ສັ່ງຫາ big-endian), ຄ່າ CRC ຄືກັນບໍ່ສາມາດຄາດການໄດ້.
ການຈັດຕັ້ງປະຕິບັດການຫັນປ່ຽນດັ່ງກ່າວອາດຈະຂະຫຍາຍອອກໄປ cksum ເພື່ອຈັດການດັ່ງກ່າວ
ສະຖານະການ.
ຕົວຢ່າງ
ບໍ່ມີ.
ສະຖານທີ່
ໂປຣແກຣມພາສາ C ຕໍ່ໄປນີ້ສາມາດໃຊ້ເປັນຕົວແບບເພື່ອອະທິບາຍ algorithm. ມັນ
ສົມມຸດວ່າ a char ເປັນ octet ຫນຶ່ງ. ມັນຍັງສົມມຸດວ່າໄຟລ໌ທັງຫມົດແມ່ນມີຢູ່ສໍາລັບ
ຫນຶ່ງຜ່ານຫນ້າທີ່. ນີ້ແມ່ນເຮັດເພື່ອຄວາມງ່າຍດາຍໃນການສະແດງ
algorithm, ແທນທີ່ຈະເປັນຮູບແບບການປະຕິບັດ.
ໄຟຟ້າສະຖິດ ລົງນາມ ຍາວ crctab[] = {
0x00000000,
0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6,
0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac,
0x5bd4b01b, 0x569796c2, 0x52568b75, 0x6a1936c8, 0x6ed82b7f,
0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a,
0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58,
0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033,
0xa4ad16ea, 0xa06c0b5d, 0xd4326d90, 0xd0f37027, 0xddb056fe,
0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4,
0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,
0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5,
0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16,
0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, 0x7897ab07,
0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93ddb, 0x6f52c06c,
0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1,
0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b,
0xbb60adfc, 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698,
0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d,
0x94ea7b2a, 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e,
0xf3b06b3b, 0xf771768c, 0xfa325055, 0xef34de2, 0xc6bcf05f,
0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,
0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80,
0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a,
0x58c1663d, 0x558240e4, 0x51435d53, 0x251d3b9e, 0x21dc2629,
0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c,
0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e,
0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65,
0xeba91bbc, 0xef68060b, 0xd727bb6, 0xd3e6a601, 0xdea580d8,
0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xa3afba2,
0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,
0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30 ບໍ່ດີ, 0x81b02d74,
0x857130c3, 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640,
0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, 0x7b827d21,
0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a,
0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, 0x18197087,
0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d,
0x2056cd3a, 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce,
0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb,
0xdbee767c, 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18,
0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, 0x89b8fd09,
0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,
0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf,
0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
};
memcrc ຍາວທີ່ບໍ່ໄດ້ເຊັນ(const unsigned char *b, size_t n)
{
/* ການປ້ອນຂໍ້ມູນ:
* const unsigned char* b == ລໍາດັບ byte ກັບ checksum
* size_t n == ຄວາມຍາວຂອງລໍາດັບ
*/
ລົງທະບຽນ size_t i;
ລົງທະບຽນ unsigned c, s = 0;
ສໍາລັບ (i = n; i > 0; −−i) {
c = *b++;
s = (s << 8) ^ crctab[(s >> 24) ^ c] ;
}
/* ຂະຫຍາຍດ້ວຍຄວາມຍາວຂອງສາຍ. */
ໃນຂະນະທີ່ (n != 0) {
c = n & 0377;
n >>= 8;
s = (s << 8) ^ crctab[(s >> 24) ^ c] ;
}
ກັບຄືນ ~s;
}
ການປະຕິບັດປະຫວັດສາດຂອງການຂຽນຈໍານວນ `` ບລັອກ '' ໄດ້ຖືກປ່ຽນເປັນການຂຽນ
ຈໍານວນຂອງ octets, ນັບຕັ້ງແຕ່ສຸດທ້າຍແມ່ນບໍ່ພຽງແຕ່ເປັນປະໂຫຍດຫຼາຍ, ແຕ່ຍັງນັບຕັ້ງແຕ່ປະຫວັດສາດ
ການປະຕິບັດຍັງບໍ່ທັນສອດຄ່ອງໃນການກໍານົດວ່າ "ບລັອກ" ຫມາຍຄວາມວ່າແນວໃດ.
ສູດການຄິດໄລ່ທີ່ໃຊ້ໄດ້ຖືກເລືອກເພື່ອເພີ່ມຄວາມທົນທານຂອງການດໍາເນີນງານ cksumທີ່ຢູ່ ບໍ່ແມ່ນ
ລະບົບ V ຫຼື BSD sum algorithm ຖືກເລືອກ. ເນື່ອງຈາກວ່າແຕ່ລະຄົນເຫຼົ່ານີ້ແມ່ນແຕກຕ່າງກັນແລະ
ແຕ່ລະຄົນແມ່ນພຶດຕິກໍາໃນຕອນຕົ້ນໃນລະບົບເຫຼົ່ານັ້ນ, ບໍ່ມີການປະນີປະນອມທີ່ແທ້ຈິງແມ່ນມີຖ້າຫາກວ່າ
ບໍ່ວ່າຈະຖືກເລືອກ - ບາງຊຸດຂອງຄໍາຮ້ອງສະຫມັກປະຫວັດສາດຈະແຕກ. ເພາະສະນັ້ນ, ຊື່
ຖືກປ່ຽນເປັນ cksum. ເຖິງແມ່ນວ່າປະຫວັດສາດ sum ຄໍາສັ່ງອາດຈະສືບຕໍ່ເປັນ
ສະຫນອງໃຫ້ເປັນເວລາຫຼາຍປີ, ບັນດາໂຄງການທີ່ອອກແບບມາສໍາລັບການເຄື່ອນທີ່ໃນທົ່ວລະບົບຄວນໃຊ້
ຊື່ໃຫມ່.
ຂັ້ນຕອນທີ່ເລືອກແມ່ນອີງໃສ່ມາດຕະຖານ ISO/IEC 8802-3:1996.
(ອີເທີເນັດ) ສໍາລັບຊ່ອງຂໍ້ມູນລໍາດັບການກວດສອບກອບ. ສູດການຄິດໄລ່ທີ່ໃຊ້ບໍ່ກົງກັບ
ຄໍານິຍາມດ້ານວິຊາການຂອງ a Checkum; ຄຳ ສັບດັ່ງກ່າວຖືກ ນຳ ໃຊ້ເພື່ອເຫດຜົນທາງປະຫວັດສາດ. ຄວາມຍາວຂອງ
ໄຟລ໌ໄດ້ຖືກລວມເຂົ້າໃນການຄິດໄລ່ CRC ເພາະວ່າຂະຫນານນີ້ລວມເຖິງຄວາມຍາວ
ພາກສະຫນາມໂດຍ Ethernet ໃນ CRC ຂອງມັນ, ແຕ່ຍັງເນື່ອງຈາກວ່າມັນປ້ອງກັນການປະທະກັນໂດຍບໍ່ໄດ້ຕັ້ງໃຈ
ລະຫວ່າງໄຟລ໌ທີ່ເລີ່ມຕົ້ນດ້ວຍຊຸດຂອງສູນ octets ທີ່ແຕກຕ່າງກັນ. ໂອກາດທີ່ສອງ
ໄຟລ໌ທີ່ແຕກຕ່າງກັນຜະລິດ CRCs ຄືກັນແມ່ນຫຼາຍກວ່າເກົ່າເມື່ອຄວາມຍາວຂອງພວກມັນບໍ່ແມ່ນ
ພິຈາລະນາ. ການຮັກສາຄວາມຍາວແລະ checksum ຂອງໄຟລ໌ຕົວມັນເອງແຍກຕ່າງຫາກຈະໃຫ້ຜົນໄດ້ຮັບ a
algorithm ທີ່ເຂັ້ມແຂງກວ່າເລັກນ້ອຍ, ແຕ່ການນໍາໃຊ້ປະຫວັດສາດແມ່ນສະເຫມີວ່າເປັນຕົວເລກດຽວ
( checksum ທີ່ພິມອອກ) ເປັນຕົວແທນຂອງລາຍເຊັນຂອງໄຟລ໌. ມັນໄດ້ຖືກຕັດສິນໃຈວ່າ
ການນໍາໃຊ້ປະຫວັດສາດແມ່ນການພິຈາລະນາທີ່ສໍາຄັນກວ່າ.
ຂໍ້ສະເໜີເບື້ອງຕົ້ນມີການດັດແປງລະບົບ Ethernet algorithm ທີ່ກ່ຽວຂ້ອງກັບການສະກັດເອົາ
ຄ່າຕາຕະລາງທຸກຄັ້ງທີ່ຜົນໄດ້ຮັບຂັ້ນກາງກາຍເປັນສູນ. ນີ້ໄດ້ຖືກສະແດງໃຫ້ເຫັນວ່າຫນ້ອຍລົງ
ແຂງແຮງກວ່າວິທີການປະຈຸບັນ ແລະຍາກໃນການອະທິບາຍ ຫຼືໃຫ້ເຫດຜົນທາງຄະນິດສາດ.
ການຄິດໄລ່ທີ່ໃຊ້ແມ່ນຄືກັນກັບທີ່ລະບຸໄວ້ໃນລະຫັດ pseudo ໃນ Sarwate ອ້າງອີງ.
ບົດຄວາມ. ການສະແດງລະຫັດ pseudo ແມ່ນ:
X <− 0; Y <− 0;
ສໍາລັບການ i <− m -1 ຂັ້ນຕອນ -1 ຈົນກ່ວາ 0 do
ເລີ່ມຕົ້ນ
T <− X(1) ^ A[i];
X(1) <− X(0) X(0) <− Y(1) Y(1) <− Y(0) Y(0) <− 0;
ຄໍາເຫັນ: f[T] ແລະ f'[T] ໝາຍເຫດ ໄດ້ ທ-ທ ຄໍາເວົ້າ in ໄດ້
ຕາຕະລາງ f ແລະ f' ;
X <− X ^ f[T]; Y <− Y ^ f'[T];
ໃນຕອນທ້າຍ
ລະຫັດ pseudo ໄດ້ຖືກຜະລິດຄືນໃຫມ່ຕາມທີ່ໄດ້ມອບໃຫ້; ຢ່າງໃດກໍຕາມ, ສັງເກດວ່າໃນກໍລະນີຂອງ cksum,
A[i] ເປັນຕົວແທນຂອງ byte ຂອງໄຟລ໌, ຄໍາ X ແລະ Y ຖືກປະຕິບັດເປັນ 32-bit ດຽວ
ມູນຄ່າ, ແລະຕາຕະລາງ f ແລະ f' ແມ່ນຕາຕະລາງດຽວທີ່ມີຄ່າ 32-bit.
ບົດຄວາມ Sarwate ອ້າງອີງຍັງປຶກສາຫາລືກ່ຽວກັບການສ້າງຕາຕະລາງ.
ອະນາຄົດ DIRECTIONS
ບໍ່ມີ.
ໃຊ້ cksumposix ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net