ð§® CRC-8/CRC-16èšç®æ©
ãã€ãæ°: 9
å ¥åããããã¹ãã®CRC-8ã»CRC-16(CCITT-FALSE)ã»CRC-16(MODBUS)ãã§ãã¯ãµã ããã®å Žã§èšç®ã§ããããŒã«ã§ããçµã¿èŸŒã¿æ©åšã®éä¿¡ãããã³ã«ãã·ãªã¢ã«éä¿¡ã®èª€ãæ€åºã§ãã䜿ãããèŠæ Œã«å¯Ÿå¿ããŠããŸãããã¹ãŠã®èšç®ã¯ãã©ãŠã¶å ã§å®çµããŸãã
äœ¿ãæ¹
- ãã§ãã¯ãµã ãèšç®ãããããã¹ããå ¥åããŸãã
- CRC-8ã»CRC-16(CCITT-FALSE)ã»CRC-16(MODBUS)ã®3çš®é¡ã®ãã§ãã¯ãµã (16鲿°)ãèªåçã«è¡šç€ºãããŸãã
èšç®ã®ä»çµã¿
CRCïŒå·¡ååé·æ€æ»ïŒã¯ãããŒã¿ãéä¿¡ãä¿åã®éäžã§å£ããŠããªããã確ãããããã®å€ã§ããããŒã¿ã倧ããª2鲿°ãšã¿ãªããæ±ºãããããçæå€é åŒãã§å²ã£ãäœãããã§ãã¯å€ã«ããŸãã ãã®ããŒã«ã¯ãå ¥åããããã¹ããUTF-8ã®ãã€ãåã«ããŠã次ã®4çš®é¡ã®CRCãèšç®ããŸãã ã»CRC-8: å€é åŒ 0x07 ã»CRC-16/CCITT-FALSE: å€é åŒ 0x1021ãåæå€ 0xFFFF ã»CRC-16/MODBUS: å€é åŒ 0x8005ãåæå€ 0xFFFFããããå転ããïŒModbuséä¿¡ã§äœ¿çšïŒ ã»CRC-32: ZIPã»gzipã»PNGã»ã€ãŒãµãããã§äœ¿ããããæãåºã䜿ãããŠããåœ¢åŒ CRCã®çš®é¡ã¯ãå€é åŒã»åæå€ã»ãããã®äžŠã³é ã®åè»¢ã»æåŸã®XORã®çµã¿åããã§æ±ºãŸããŸããåããCRC-16ããšããååã§ããããããéãã°çµæã¯å€ãããŸãã
èšç®äŸ
å ¥å: 123456789ïŒåCRCã®åäœç¢ºèªã«äœ¿ãããæšæºã®æååïŒ CRC-8: 0xF4 CRC-16/CCITT-FALSE: 0x29B1 CRC-16/MODBUS: 0x4B37 CRC-32: 0xCBF43926 ãããã¯ãåèŠæ Œã§å ¬è¡šãããŠããããã§ãã¯å€ããšäžèŽããŸãã
䜿çšäžã®æ³šæ
- CRCã¯å¶ç¶ã®èª€ãïŒãã€ãºã«ãããããã®å転ãªã©ïŒãèŠã€ããããã®ãã®ã§ãæå³çãªæ¹ããã¯é²ããŸãããæ¹ããã®æ€åºã«ã¯ãSHA-256ãHMACã䜿ã£ãŠãã ããã
- å ¥åã¯UTF-8ã®ãã€ãåãšããŠèšç®ãããããåãæåã§ãShift_JISãªã©å¥ã®æåã³ãŒãã®ããŒã¿ãšã¯çµæãå€ãããŸãã
- CRC-16ã«ã¯ãXMODEMãKERMITãARCãªã©ãããã«å€ãã®çš®é¡ããããŸãã
ãããã質å
CRC-8ãšCRC-16ã®éãã¯äœã§ãã?
ãããå¹ ãç°ãªããŸããCRC-8ã¯8ããã(0x00ã0xFF)ãCRC-16ã¯16ããã(0x0000ã0xFFFF)ã®ãã§ãã¯ãµã ãçæããCRC-16ã®æ¹ãããå€ãã®ããã誀ããæ€åºã§ããŸãã
CCITT-FALSEãšMODBUSã¯äœãéããŸãã?
åãCRC-16ã§ãã䜿çšããçæå€é åŒã»åæå€ã»ãããåè»¢ã®æç¡ãç°ãªãè€æ°ã®æŽŸçèŠæ ŒããããCCITT-FALSEãšMODBUSã¯ããããç°ãªããã©ã¡ãŒã¿ã䜿ã代衚çãªèŠæ Œã§ãã
æ¢åã®ãã§ãã¯ãµã èšç®ããŒã«ãšã®éãã¯äœã§ãã?
åœãµã€ãã®ããã§ãã¯ãµã èšç®ãããŒã«ã¯CRC32ã»Adler-32ã«å¯Ÿå¿ããŠããããã®ããŒã«ã¯CRC-8ã»CRC-16ç³»ã®èŠæ Œã«å¯Ÿå¿ããŠããŸããçšéã«å¿ããŠäœ¿ãåããŠãã ããã