Skip to content

Commit

Permalink
feat: generate crc table instead of hard-coding
Browse files Browse the repository at this point in the history
  • Loading branch information
bchmnn committed Jul 15, 2024
1 parent dbcd3c6 commit f1bc43c
Showing 1 changed file with 27 additions and 270 deletions.
297 changes: 27 additions & 270 deletions service/backend/util/crc.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,265 +5,7 @@ import (
)

var CRC_DEGREE int64 = 251

var CRC_TABLE = [...]string{
"0",
"561cc4ee956c6503c5da0ffacb20feabb3eb142e7645e7ff1a2067fd8e1cfb",
"ac3989dd2ad8ca078bb41ff59641fd5767d6285cec8bcffe3440cffb1c39f6",
"fa254d33bfb4af044e6e100f5d6103fcd43d3c729ace28012e60a80692250d",
"1587313ba55b1940f17683feb2c83faaecfac50b9d9179ffc68819ff63873ec",
"10e6fd754c0ddf10cd2b23011e7a304057c474497af52780372a1f80bb66f17",
"1f44a9a677f695e089cdc201ebac207f9a87a78e5359c50025cc1500d244a1a",
"1a2565e89ea053b0b59062fe471e2f9521b916ccb43d9b7fd46e137f0aa56e1",
"2b0e62774ab63281e2ed07fd65907f55d9f58a173b22f3ff8d1033fec70e7d8",
"2e6fae39a3e0f4d1deb0a702c92270bf62cb3b55dc46ad807cb235811fefb23",
"21cdfaea981bbe219a5646023cf46080af88e892f5ea4f006e543f0176cde2e",
"24ac36a4714d7871a60be6fd90466f6a14b659d0128e117f9ff6397eae2c2d5",
"3e89534cefed2bc1139b8403d75840ff350f4f1ca6b38a004b982a01a489434",
"3be89f0206bbed912fc624fc7bea4f158e31fe5e41d7d47fba3a2c7e7c688cf",
"344acbd13d40a7616b20c5fc8e3c5f2a43722d99687b36ffa8dc26fe154adc2",
"312b079fd4166131577d6503228e50c0f84c9cdb8f1f6880597e2081cdab139",
"561cc4ee956c6503c5da0ffacb20feabb3eb142e7645e7ff1a2067fd8e1cfb0",
"537d08a07c3aa353f987af056792f14108d5a56c9121b980eb82618256fd34b",
"5cdf5c7347c1e9a3bd614e059244e17ec59676abb88d5b00f9646b023fdf646",
"59be903dae972ff3813ceefa3ef6ee947ea8c7e95fe9057f08c66d7de73eabd",
"439bf5d530377c4334ac8c0479e8c1015f11d125ebd49e00dca87e02ed9bc5c",
"46fa399bd961ba1308f12cfbd55aceebe42f60670cb0c07f2d0a787d357a0a7",
"49586d48e29af0e34c17cdfb208cded4296cb3a0251c22ff3fec72fd5c585aa",
"4c39a1060bcc36b3704a6d048c3ed13e925202e2c2787c80ce4e748284b9951",
"7d12a699dfda578227370807aeb081fe6a1e9e394d671400973054034912868",
"78736ad7368c91d21b6aa8f802028e14d1202f7baa034a7f6692527c91f3493",
"77d13e040d77db225f8c49f8f7d49e2b1c63fcbc83afa8ff747458fcf8d119e",
"72b0f24ae4211d7263d1e9075b6691c1a75d4dfe64cbf68085d65e832030d65",
"689597a27a814ec2d6418bf91c78be5486e45b32d0f66dff51b84dfc2a95b84",
"6df45bec93d78892ea1c2b06b0cab1be3ddaea7037923380a01a4b83f27477f",
"62560f3fa82cc262aefaca06451ca181f09939b71e3ed100b2fc41039b56272",
"6737c371417a043292a76af9e9aeae6b4ba788f5f95a8f7f435e477c43b7e89",
"29584593c38e0c57b7e9bf0a3af3f2bddce8991e0bef9181c5e2c984c4d839b",
"2c3989dd2ad8ca078bb41ff59641fd5767d6285cec8bcffe3440cffb1c39f60",
"239bdd0e112380f7cf52fef56397ed68aa95fb9bc5272d7e26a6c57b751ba6d",
"26fa1140f87546a7f30f5e0acf25e28211ab4ad922437301d704c304adfa696",
"3cdf74a866d51517469f3cf4883bcd1730125c15967ee87e036ad07ba75f077",
"39beb8e68f83d3477ac29c0b2489c2fd8b2ced57711ab601f2c8d6047fbec8c",
"361cec35b47899b73e247d0bd15fd2c2466f3e9058b65481e02edc84169c981",
"337d207b5d2e5fe70279ddf47deddd28fd518fd2bfd20afe118cdafbce7d57a",
"25627e489383ed65504b8f75f638de8051d130930cd627e48f2fa7a03d6443",
"737ebaa606ef88669591808f3d18202be23a24bd7a93c01b950fc05db378b8",
"895bf795b95b2762dbff9080607923d7360718cfe05de81abb6f685b215db5",
"df47337b2c3742611e259f7aab59dd7c85ec0ce196180fe5a14f0fa6af414e",
"17d116df2c632796a4723b09edabb242e9e7d602ad5c1b818e7ae38560517af",
"12b0da91c535e1c6982f9bf64119bda852d967404a3845fe7fd8e5fab8b0b54",
"1d128e42feceab36dcc97af6b4cfad979f9ab4876394a77e6d3eef7ad192e59",
"1873420c17986d66e094da09187da27d24a405c584f0f9019c9ce90509732a2",
"7f44817d56e269547233b0f0f1d30c166f038d307daa767edfc2ae794ac4c2b",
"7a254d33bfb4af044e6e100f5d6103fcd43d3c729ace28012e60a80692250d0",
"758719e0844fe5f40a88f10fa8b713c3197eefb5b362ca813c86a286fb075dd",
"70e6d5ae6d1923a436d551f004051c29a2405ef7540694fecd24a4f923e6926",
"6ac3b046f3b970148345330e431b33bc83f9483be03b0f81194ab7862943fc7",
"6fa27c081aefb644bf1893f1efa93c5638c7f979075f51fee8e8b1f9f1a233c",
"600028db2114fcb4fbfe72f11a7f2c69f5842abe2ef3b37efa0ebb799880631",
"6561e495c8423ae4c7a3d20eb6cd23834eba9bfcc997ed010bacbd064061aca",
"544ae30a1c545bd590deb70d94437343b6f607274688858152d29d878dcabf3",
"512b2f44f5029d85ac8317f238f17ca90dc8b665a1ecdbfea3709bf8552b708",
"5e897b97cef9d775e865f6f2cd276c96c08b65a28840397eb19691783c09205",
"5be8b7d927af1125d438560d6195637c7bb5d4e06f24670140349707e4e8efe",
"41cdd231b90f429561a834f3268b4ce95a0cc22cdb19fc7e945a8478ee4d81f",
"44ac1e7f505984c55df5940c8a394303e132736e3c7da20165f8820736ac4e4",
"4b0e4aac6ba2ce351913750c7fef533c2c71a0a915d14081771e88875f8e1e9",
"4e6f86e282f40865254ed5f3d35d5cd6974f11ebf2b51efe86bc8ef8876fd12",
"52b08b27871c18af6fd37e1475e7e57bb9d1323c17df23038bc5930989b0736",
"57d147696e4adeff538edeebd955ea9102ef837ef0bb7d7c7a6795765151bcd",
"587313ba55b1940f17683feb2c83faaecfac50b9d9179ffc68819ff63873ec0",
"5d12dff4bce7525f2b359f148031f5447492e1fb3e73c18399239989e09223b",
"4737ba1c224701ef9ea5fdeac72fdad1552bf7378a4e5afc4d4d8af6ea374da",
"42567652cb11c7bfa2f85d156b9dd53bee1546756d2a0483bcef8c8932d6821",
"4df42281f0ea8d4fe61ebc159e4bc504235695b24486e603ae0986095bf4d2c",
"4895eecf19bc4b1fda431cea32f9caee986824f0a3e2b87c5fab807683151d7",
"79bee950cdaa2a2e8d3e79e910779a2e6024b82b2cfdd0fc06d5a0f74ebe0ee",
"7cdf251e24fcec7eb163d916bcc595c4db1a0969cb998e83f777a688965fc15",
"737d71cd1f07a68ef5853816491385fb1659daaee2356c03e591ac08ff7d918",
"761cbd83f65160dec9d898e9e5a18a11ad676bec0551327c1433aa77279c5e3",
"6c39d86b68f1336e7c48fa17a2bfa5848cde7d20b16ca903c05db9082d39302",
"6958142581a7f53e40155ae80e0daa6e37e0cc625608f77c31ffbf77f5d8ff9",
"66fa40f6ba5cbfce04f3bbe8fbdbba51faa31fa57fa415fc2319b5f79cfaaf4",
"639b8cb8530a799e38ae1b175769b5bb419daee798c04b83d2bbb388441b60f",
"4ac4fc912707dacaa0971eebec71bd00a3a2612619ac4fc91e5f4f407ac886",
"1cd8387fb26bbfc9654d1111275143ab104975086fe9a836047f28bdf4d47d",
"e6fd754c0ddf10cd2b23011e7a304057c474497af52780372a1f80bb66f170",
"b0e1b1a298b375ceeef90ee4b110befc779f5d54836267c8303fe746e8ed8b",
"112b7ef2b72b64ec5b7ff2100c0f247ae6c0e319fc0bbd03576ded0b642bb6a",
"144ab2bc5e7da2bc672252efa0bd2b905dfe525b1b6fe37ca6cfeb74bcca791",
"1be8e66f6586e84c23c4b3ef556b3baf90bd819c32c301fcb429e1f4d5e829c",
"1e892a218cd02e1c1f991310f9d934452b8330ded5a75f83458be78b0d09e67",
"2fa22dbe58c64f2d48e47613db576485d3cfac055ab837031cf5c70ac0a2f5e",
"2ac3e1f0b190897d74b9d6ec77e56b6f68f11d47bddc697ced57c17518433a5",
"2561b5238a6bc38d305f37ec82337b50a5b2ce8094708bfcffb1cbf571616a8",
"2000796d633d05dd0c0297132e8174ba1e8c7fc27314d5830e13cd8aa980a53",
"3a251c85fd9d566db992f5ed699f5b2f3f35690ec7294efcda7ddef5a325cb2",
"3f44d0cb14cb903d85cf5512c52d54c5840bd84c204d10832bdfd88a7bc4049",
"30e684182f30dacdc129b41230fb44fa49480b8b09e1f2033939d20a12e6544",
"35874856c6661c9dfd7414ed9c494b10f276bac9ee85ac7cc89bd475ca079bf",
"7be8ceb4449214f8d83ac11e4f1417c66539ab221c30b2824e275a8d4d684ad",
"7e8902faadc4d2a8e46761e1e3a6182cde071a60fb54ecfdbf855cf29589856",
"712b5629963f9858a08180e1167008131344c9a7d2f80e7dad635672fcabd5b",
"744a9a677f695e089cdc201ebac207f9a87a78e5359c50025cc1500d244a1a0",
"6e6fff8fe1c90db8294c42e0fddc286c89c36e2981a1cb7d88af43722eef741",
"6b0e33c1089fcbe81511e21f516e278632fddf6b66c59502790d450df60ebba",
"64ac67123364811851f7031fa4b837b9ffbe0cac4f6977826beb4f8d9f2ceb7",
"61cdab5cda3247486daaa3e0080a38534480bdeea80d29fd9a4949f247cd24c",
"50e6acc30e2426793ad7c6e32a846893bccc21352712417dc33769738a66375",
"5587608de772e029068a661c8636677907f29077c0761f0232956f0c5287f8e",
"5a25345edc89aad9426c871c73e07746cab143b0e9dafd822073658c3ba5a83",
"5f44f81035df6c897e3127e3df5278ac718ff2f20ebea3fdd1d163f3e344678",
"45619df8ab7f3f39cba1451d984c57395036e43eba83388205bf708ce9e1099",
"400051b64229f969f7fce5e234fe58d3eb08557c5de766fdf41d76f33100c62",
"4fa2056579d2b399b31a04e2c12848ec264b86bb744b847de6fb7c73582296f",
"4ac3c92b908475c98f47a41d6d9a47069d7537f9932fda0217597a0c80c3594",
"2df40a5ad1fe71fb1de0cee48434e96dd6d2bf0c6a75557d54073d70c374b1d",
"2895c61438a8b7ab21bd6e1b2886e6876dec0e4e8d110b02a5a53b0f1b957e6",
"273792c70353fd5b655b8f1bdd50f6b8a0afdd89a4bde982b743318f72b72eb",
"22565e89ea053b0b59062fe471e2f9521b916ccb43d9b7fd46e137f0aa56e10",
"38733b6174a568bbec964d1a36fcd6c73a287a07f7e42c82928f248fa0f38f1",
"3d12f72f9df3aeebd0cbede59a4ed92d8116cb45108072fd632d22f0781240a",
"32b0a3fca608e41b942d0ce56f98c9124c551882392c907d71cb28701130107",
"37d16fb24f5e224ba870ac1ac32ac6f8f76ba9c0de48ce0280692e0fc9d1dfc",
"6fa682d9b48437aff0dc919e1a496380f27351b5157a682d9170e8e047acc5",
"39ba463721e852ac35069e64d1699d2b4198459b633f8fd28b508f1dc9b03e",
"c39f0b049e5cfda87b688e6b8c089ed795a579e9f9f1a7d3a530271b5b9533",
"9583cfea0b3098abbeb281914728607c264e6dc78fb4402cbf1040e6d589c8",
"137d59163e135a3a0e7b4ae7536ca992e3ddf010ccc6df7d1f9f177167fdf29",
"161c9558d7459c6a3226ea18ffdea67858e341522ba28102ee3d110ebf1c3d2",
"19bec18becbed69a76c00b180a08b64795a09295020e6382fcdb1b8ed63e6df",
"1cdf0dc505e810ca4a9dabe7a6bab9ad2e9e23d7e56a3dfd0d791df10edfa24",
"2000da01e76ef70ee3fb5cd7477dc51dc89cd53ac8da1878e629206ccb81297",
"2561164f0e38315edfa6fc28ebcfcaf773a264782fbe4607178b26131360e6c",
"2ac3429c35c37bae9b401d281e19dac8bee1b7bf0612a487056d2c937a42b61",
"2fa28ed2dc95bdfea71dbdd7b2abd52205df06fde176faf8f4cf2aeca2a379a",
"3587eb3a4235ee4e128ddf29f5b5fab724661031554b618720a13993a80617b",
"30e62774ab63281e2ed07fd65907f55d9f58a173b22f3ff8d1033fec70e7d80",
"3f4473a7909862ee6a369ed6acd1e562521b72b49b83dd78c3e5356c19c588d",
"3a25bfe979cea4be566b3e290063ea88e925c3f67ce7830732473313c124476",
"b0eb876add8c58f01165b2a22edba4811695f2df3f8eb876b3913920c8f54f",
"e6f7438448e03df3d4bfbd58e5fb5a2aa57ee6f149cb5f89a9b15edd46e9b4",
"1cd20eb7f75492f79ad1ad57b89a59d67143da83d305778887d1f6dbd4ccb9",
"4aceca596238f7f45f0ba2ad73baa77dc2a8ceada54090779df191265ad042",
"1e89894d0883dccff060d8d4902585e2fd939a266e699278adb10a6d6f086a3",
"1be84503e1d51a9fcc3d782b3c978a0846ad2b64890dcc075c130c12b7e9a58",
"144a11d0da2e506f88db992bc9419a378beef8a3a0a12e874ef50692decbf55",
"112bdd9e3378963fb48639d465f395dd30d049e147c570f8bf5700ed062a3ae",
"761c1eef7202920d2621532d8c5d3bb67b77c114be9fff87fc094791459dd27",
"737dd2a19b54545d1a7cf3d220ef345cc049705659fba1f80dab41ee9d7c1dc",
"7cdf8672a0af1ead5e9a12d2d53924630d0aa391705743781f4d4b6ef45e4d1",
"79be4a3c49f9d8fd62c7b22d798b2b89b63412d397331d07eeef4d112cbf82a",
"639b2fd4d7598b4dd757d0d33e95041c978d041f230e86783a815e6e261aecb",
"66fae39a3e0f4d1deb0a702c92270bf62cb3b55dc46ad807cb235811fefb230",
"6958b74905f407edafec912c67f11bc9e1f0669aedc63a87d9c5529197d973d",
"6c397b07eca2c1bd93b131d3cb4314235aced7d80aa264f8286754ee4f38bc6",
"5d127c9838b4a08cc4cc54d0e9cd44e3a2824b0385bd0c787119746f8293aff",
"5873b0d6d1e266dcf891f42f457f4b0919bcfa4162d9520780bb72105a72604",
"57d1e405ea192c2cbc77152fb0a95b36d4ff29864b75b087925d78903350309",
"52b0284b034fea7c802ab5d01c1b54dc6fc198c4ac11eef863ff7eefebb1ff2",
"48954da39defb9cc35bad72e5b057b494e788e08182c7587b7916d90e114913",
"4df481ed74b97f9c09e777d1f7b774a3f5463f4aff482bf846336bef39f55e8",
"4256d53e4f42356c4d0196d10261649c3805ec8dd6e4c97854d5616f50d70e5",
"47371970a614f33c715c362eaed36b76833b5dcf31809707a57767108836c1e",
"9589f9224e0fb595412e3dd7d8e37a014744c24c33589f923cbe9e80f5910c",
"c3953dccdb63d09684f4322d13c384aaf4afd662451d786d269ef97d7b8df7",
"39b070ff64d77f92ca9a22224ea287562092ea10dfd3506c08fe517be9a8fa",
"6facb411f1bb1a910f402dd8858279fd9379fe3ea996b79312de368667b401",
"1cdfaea981bbe219a5646023cf46080af88e892f5ea4f006e543f0176cde2e0",
"19be62e768ed24499939c0dc63f407e043b0386db9c0ae7914e1f668b43fe1b",
"161c363453166eb9dddf21dc962217df8ef3ebaa906c4cf90607fce8dd1db16",
"137dfa7aba40a8e9e18281233a90183535cd5ae877081286f7a5fa9705fc7ed",
"2256fde56e56c9d8b6ffe420181e48f5cd81c633f8177a06aedbda16c8576d4",
"273731ab87000f888aa244dfb4ac471f76bf77711f7324795f79dc6910b6a2f",
"28956578bcfb4578ce44a5df417a5720bbfca4b636dfc6f94d9fd6e97994f22",
"2df4a93655ad8328f2190520edc858ca00c215f4d1bb9886bc3dd096a1753d9",
"37d1ccdecb0dd098478967deaad6775f217b0338658603f96853c3e9abd0538",
"32b00090225b16c87bd4c721066478b59a45b27a82e25d8699f1c59673319c3",
"3d12544319a05c383f322621f3b2688a570661bdab4ebf068b17cf161a13cce",
"3873980df0f69a68036f86de5f006760ec38d0ff4c2ae1797ab5c969c2f2035",
"5f445b7cb18c9e5a91c8ec27b6aec90ba79f580ab5706e0639eb8e158145ebc",
"5a25973258da580aad954cd81a1cc6e11ca1e94852143079c849886a59a4247",
"5587c3e1632112fae973add8efcad6ded1e23a8f7bb8d2f9daaf82ea308674a",
"50e60faf8a77d4aad52e0d274378d9346adc8bcd9cdc8c862b0d8495e867bb1",
"4ac36a4714d7871a60be6fd90466f6a14b659d0128e117f9ff6397eae2c2d50",
"4fa2a609fd81414a5ce3cf26a8d4f94bf05b2c43cf8549860ec191953a231ab",
"4000f2dac67a0bba18052e265d02e9743d18ff84e629ab061c279b1553014a6",
"45613e942f2ccdea24588ed9f1b0e69e86264ec6014df579ed859d6a8be085d",
"744a390bfb3aacdb7325ebdad33eb65e7e6ad21d8e529df9b4fbbdeb464b964",
"712bf545126c6a8b4f784b257f8cb9b4c554635f6936c3864559bb949eaa59f",
"7e89a1962997207b0b9eaa258a5aa98b0817b098409a210657bfb114f788092",
"7be86dd8c0c1e62b37c30ada26e8a661b32901daa7fe7f79a61db76b2f69c69",
"61cd08305e61b59b8253682461f689f49290171613c3e4067273a41425cca88",
"64acc47eb73773cbbe0ec8dbcd44861e29aea654f4a7ba7983d1a26bfd2d673",
"6b0e90ad8ccc393bfae829db38929621e4ed7593dd0b58f99137a8eb940f37e",
"6e6f5ce3659aff6bc6b58924942099cb5fd3c4d13a6f06866095ae944ceef85",
"72b051266072efa18c2822c3329a2066714de706df053b7b6decb36542315a1",
"77d19d68892429f1b075823c9e282f8cca735644386165049c4eb51a9ad095a",
"7873c9bbb2df6301f493633c6bfe3fb30730858311cd87848ea8bf9af3f2c57",
"7d1205f55b89a551c8cec3c3c74c3059bc0e34c1f6a9d9fb7f0ab9e52b130ac",
"6737601dc529f6e17d5ea13d80521fcc9db7220d42944284ab64aa9a21b664d",
"6256ac532c7f30b1410301c22ce010262689934fa5f01cfb5ac6ace5f957ab6",
"6df4f88017847a4105e5e0c2d9360019ebca40888c5cfe7b4820a6659075fbb",
"689534cefed2bc1139b8403d75840ff350f4f1ca6b38a004b982a01a4894340",
"59be33512ac4dd206ec5253e570a5f33a8b86d11e427c884e0fc809b853f279",
"5cdfff1fc3921b70529885c1fbb850d91386dc53034396fb115e86e45ddee82",
"537dabccf8695180167e64c10e6e40e6dec50f942aef747b03b88c6434fcb8f",
"561c6782113f97d02a23c43ea2dc4f0c65fbbed6cd8b2a04f21a8a1bec1d774",
"4c39026a8f9fc4609fb3a6c0e5c260994442a81a79b6b17b26749964e6b8195",
"4958ce2466c90230a3ee063f49706f73ff7c19589ed2ef04d7d69f1b3e59d6e",
"46fa9af75d3248c0e708e73fbca67f4c323fca9fb77e0d84c530959b577b863",
"439b56b9b4648e90db5547c0101470a689017bdd501a53fb349293e48f9a498",
"24ac95c8f51e8aa249f22d39f9badecdc2a6f328a940dc8477ccd498cc2da11",
"21cd59861c484cf275af8dc65508d1277998426a4e2482fb866ed2e714cc6ea",
"2e6f0d5527b3060231496cc6a0dec118b4db91ad6788607b9488d8677dee3e7",
"2b0ec11bcee5c0520d14cc390c6ccef20fe520ef80ec3e04652ade18a50ff1c",
"312ba4f3504593e2b884aec74b72e1672e5c362334d1a57bb144cd67afaa9fd",
"344a68bdb91355b284d90e38e7c0ee8d95628761d3b5fb0440e6cb18774b506",
"3be83c6e82e81f42c03fef381216feb2582154a6fa1919845200c1981e6900b",
"3e89f0206bbed912fc624fc7bea4f158e31fe5e41d7d47fba3a2c7e7c688cf0",
"fa2f7bfbfa8b823ab1f2ac49c2aa1981b53793f92622f7bfadce7660b23dc9",
"ac33bf156fe7e7397428a3b3098ae72a06dc87d750671040b7ee119d3c2132",
"5616f226d053483d3a46b3bc54ebe4d6d2e1bba5caa93841998eb99bae043f",
"a36c8453f2d3eff9cbc469fcb1a7d610aaf8bbcecdfbe83aede662018c4",
"1a25c6841af3a1635a69a93a2ee29e32f7a9bc340ff356843c54fe9968a4e25",
"1f440acaf3a56733663409c5825091d84c970d76e89708fbcdf6f8e6b0452de",
"10e65e19c85e2dc322d2e8c5778681e781d4deb1c13bea7bdf10f266d9677d3",
"158792572108eb931e8f483adb348e0d3aea6ff3265fb4042eb2f4190186b28",
"5be814b5a3fce3f63bc19dc90869d2dbada57e18d4eaaafaa80e7ae186e963a",
"5e89d8fb4aaa25a6079c3d36a4dbdd31169bcf5a338ef48559ac7c9e5e08ac1",
"512b8c2871516f56437adc36510dcd0edbd81c9d1a2216054b4a761e372afcc",
"544a40669807a9067f277cc9fdbfc2e460e6addffd46487abae87061efcb337",
"4e6f258e06a7fab6cab71e37baa1ed71415fbb13497bd3056e86631ee56e5d6",
"4b0ee9c0eff13ce6f6eabec81613e29bfa610a51ae1f8d7a9f2465613d8f92d",
"44acbd13d40a7616b20c5fc8e3c5f2a43722d99687b36ffa8dc26fe154adc20",
"41cd715d3d5cb0468e51ff374f77fd4e8c1c68d460d731857c60699e8c4c0db",
"70e676c2e94ad177d92c9a346df9ad8e7450f40fefc85905251e491f41e71e2",
"7587ba8c001c1727e5713acbc14ba264cf6e454d08ac077ad4bc4f609906d19",
"7a25ee5f3be75dd7a197dbcb349db25b022d968a2100e5fac65a45e0f024814",
"7f442211d2b19b879dca7b34982fbdb1b91327c8c664bb8537f8439f28c54ef",
"656147f94c11c837285a19cadf31922498aa3104725920fae39650e0226020e",
"60008bb7a5470e671407b93573839dce23948046953d7e851234569ffa81ef5",
"6fa2df649ebc449750e1583586558df1eed75381bc919c0500d25c1f93a3bf8",
"6ac3132a77ea82c76cbcf8ca2ae7821b55e9e2c35bf5c27af1705a604b42703",
"df4d05b369086f5fe1b9233c3492c701e4e6a36a2af4d05b22e1d1c08f598a",
"8951c15dfc640a5c24632cc6ffb239aa570db7445cb137a438c1b63d014571",
"73748c6e43d0a5586a0d3cc9a2d33a5683308b36c67f1fa516a11e3b93607c",
"25684880d6bcc05bafd7333369f3c4fd30db9f18b03af85a0c8179c61d7c87",
"1873e16093cb9fb50f6d11cd718113daf2b4af3d3f3e34fa74a604e36b72a66",
"1d122d2e7a9d59e53330b132dd331c30498a1e7fd85a6a858504029cb39369d",
"12b079fd4166131577d6503228e50c0f84c9cdb8f1f6880597e2081cdab1390",
"17d1b5b3a830d5454b8bf0cd845703e53ff77cfa1692d67a66400e630250f6b",
"26fab22c7c26b4741cf695cea6d95325c7bbe021998dbefa3f3e2ee2cffbe52",
"239b7e629570722420ab35310a6b5ccf7c8551637ee9e085ce9c289d171a2a9",
"2c392ab1ae8b38d4644dd431ffbd4cf0b1c682a457450205dc7a221d7e387a4",
"2958e6ff47ddfe84581074ce530f431a0af833e6b0215c7a2dd82462a6d9b5f",
"337d8317d97dad34ed80163014116c8f2b41252a041cc705f9b6371dac7cdbe",
"361c4f59302b6b64d1ddb6cfb8a36365907f9468e378997a08143162749d145",
"39be1b8a0bd02194953b57cf4d75735a5d3c47afcad47bfa1af23be21dbf448",
"3cdfd7c4e286e7c4a966f730e1c77cb0e602f6ed2db02585eb503d9dc55e8b3",
}
var CRC_POLYNOMIAL = "8561cc4ee956c6503c5da0ffacb20feabb3eb142e7645e7ff1a2067fd8e1cfb"

type CRCUtil struct {
Degree uint
Expand All @@ -272,19 +14,32 @@ type CRCUtil struct {
Mask *big.Int
}

func CRC() CRCUtil {

func genCRCTable(degree int64, poly *big.Int) [256]*big.Int {
var table [256]*big.Int

for i, v := range CRC_TABLE {
num, _ := new(big.Int).SetString(v, 16)

if num == nil {
panic("Failed to create table")
mask := new(big.Int).Sub(new(big.Int).Exp(big.NewInt(2), big.NewInt(degree), nil),
big.NewInt(1),
)
for i := 0; i < 256; i++ {
c := big.NewInt(int64(i))
c = new(big.Int).Lsh(c, uint(degree-8))
m := new(big.Int).Lsh(big.NewInt(1), uint(degree-1))
for j := 0; j < 8; j++ {
if new(big.Int).And(c, m).Cmp(big.NewInt(0)) != 0 {
c = new(big.Int).Xor(
new(big.Int).Lsh(c, 1),
poly,
)
} else {
c = new(big.Int).Lsh(c, 1)
}
}

table[i] = num
c = new(big.Int).And(c, mask)
table[i] = c
}
return table
}

func CRC() CRCUtil {

degree := big.NewInt(CRC_DEGREE)

Expand All @@ -297,6 +52,9 @@ func CRC() CRCUtil {
big.NewInt(1),
)

poly, _ := new(big.Int).SetString(CRC_POLYNOMIAL, 16)
var table = genCRCTable(CRC_DEGREE, poly)

return CRCUtil{
Degree: uint(CRC_DEGREE),
DegreeBI: degree,
Expand Down Expand Up @@ -336,4 +94,3 @@ func (crc *CRCUtil) Calculate(s []byte) *big.Int {

return result
}

0 comments on commit f1bc43c

Please sign in to comment.