免费邀请码更改用户名领国庆勋章CRC32解密2.0回帖奖励召回投票记录删除领夜猫子帮助中心 本站已运行
查看: 90|回复: 0
收起左侧

易语言实现计算字节集/文本型数据的CRC64哈希校验散列值模块源码 - 纯核心库实现

[复制链接]
发表于 2019-5-27 19:40:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?加入我们

x

  1. .版本 2

  2. .程序集 CRC64计算模块
  3. .程序集变量 CRC64表格, 长整数型, , "256"
  4. .程序集变量 CRC64常数, 长整数型, , "3"

  5. .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码

  6. 初始化CRC64 ()
  7. _临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
  8. 返回 (0)  ' 可以根据您的需要返回任意数值

  9. .子程序 _临时子程序

  10. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
  11. 输出调试文本 (CRC64_文本型 (“Hello World! 中文测试”))


  12. .子程序 初始化CRC64
  13. .局部变量 i, 整数型
  14. .局部变量 crc, 长整数型

  15. CRC64常数 [1] = 取字节集数据 ({ 255, 255, 255, 255, 255, 255, 255, 127 }, #长整数型, )
  16. CRC64常数 [2] = 取字节集数据 ({ 66, 15, 135, 215, 149, 87, 108, 201 }, #长整数型, )
  17. CRC64常数 [3] = 取字节集数据 ({ 255, 255, 255, 255, 255, 255, 255, 0 }, #长整数型, )
  18. .变量循环首 (0, 255, 1, i)
  19.     crc = i
  20.     .计次循环首 (8, )
  21.         crc = 长整数位异或 (长整数位与 (长整数右移 (crc, 1), CRC64常数 [1]), 选择 (长整数位与 (crc, 1) = 1, CRC64常数 [2], 0))
  22.     .计次循环尾 ()
  23.     CRC64表格 [i + 1] = crc
  24. .变量循环尾 ()


  25. .子程序 长整数右移, 长整数型
  26. .参数 值, 长整数型
  27. .参数 位数, 整数型

  28. 置入代码 ({ 139, 69, 8, 139, 85, 12, 139, 77, 16, 128, 249, 64, 115, 14, 128, 249, 32, 115, 16, 15, 173, 208, 211, 250, 201, 194, 12, 0, 193, 250, 31, 137, 208, 235, 245, 137, 208, 193, 250, 31, 128, 225, 31, 211, 248, 235, 233 })
  29. 返回 (0)

  30. .子程序 长整数位与, 长整数型
  31. .参数 值1, 长整数型
  32. .参数 值2, 长整数型

  33. 置入代码 ({ 139, 69, 8, 139, 85, 12, 35, 69, 16, 35, 85, 20, 201, 194, 16, 0 })
  34. 返回 (0)

  35. .子程序 长整数位异或, 长整数型
  36. .参数 值1, 长整数型
  37. .参数 值2, 长整数型

  38. 置入代码 ({ 139, 69, 8, 139, 85, 12, 51, 69, 16, 51, 85, 20, 201, 194, 16, 0 })
  39. 返回 (0)

  40. .子程序 长整数位取反, 长整数型
  41. .参数 值, 长整数型

  42. 置入代码 ({ 139, 69, 8, 139, 85, 12, 247, 208, 247, 210, 201, 194, 8, 0 })
  43. 返回 (0)

  44. .子程序 CRC64, 长整数型, 公开
  45. .参数 数据, 字节集
  46. .局部变量 crc, 长整数型
  47. .局部变量 i, 整数型

  48. crc = -1
  49. .计次循环首 (取字节集长度 (数据), i)
  50.     crc = 长整数位异或 (CRC64表格 [长整数位与 (长整数位异或 (crc, 数据 [i]), 255) + 1], 长整数位与 (长整数右移 (crc, 8), CRC64常数 [3]))
  51. .计次循环尾 ()
  52. 返回 (长整数位取反 (crc))


  53. .子程序 CRC64_文本型, 长整数型, 公开
  54. .参数 文本, 文本型

  55. 返回 (CRC64 (到字节集 (文本)))
复制代码

相关帖子

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则