在翻译加密代码时遇到这个murmurhash2算法了,网上找了几个现成的加密结果对不上,自己手动对照原加密翻译了一般python3版本的。

# -*- coding: utf-8 -*-
# @ Time    : 2021/8/26 14:40
# @Note: Please do not use this program for illegal uses.import ctypesdef unsigned_right_shitf(num, bit):return ctypes.c_uint32(num).value >> bitdef c_int32(int_num):return ctypes.c_int32(int_num).valuedef murmurhash2(e, timestamp):array_len = len(e)f = c_int32(timestamp ^ array_len)o = 0while array_len >= 4:v2 = c_int32(255 & e[o])o += 1v3 = c_int32((c_int32(255 & e[o])) << 8)o += 1v4 = c_int32((c_int32(255 & e[o])) << 16)o += 1v5 = c_int32(c_int32((255 & e[o])) << 24)n = c_int32(c_int32(c_int32(v2 | v3) | v4) | v5)v1 = c_int32(65535 & n)n = 1540483477 * v1 + c_int32((c_int32(1540483477 * (c_int32(n >> 16)) & 65535)) << 16)n = c_int32(c_int32(n) ^ c_int32(unsigned_right_shitf(n, 24)))n = 1540483477 * (c_int32(65535 & n)) + c_int32((c_int32(1540483477 * (c_int32(n >> 16)) & 65535)) << 16)j1 = 1540483477 * (c_int32(65535 & f))j2 = c_int32((1540483477 * (c_int32(f >> 16)) & 65535) << 16)f = c_int32((j1 + j2) ^ n)o += 1array_len -= 4f = c_int32(f)def case1(ff):ff = c_int32(ff ^ (c_int32(255 & e[o])))return 1540483477 * (c_int32(65535 & ff)) + c_int32((c_int32(1540483477 * (c_int32(ff >> 16)) & 65535)) << 16)def case2(ff):return c_int32(ff ^ c_int32((c_int32(255 & e[o + 1])) << 8))def case3(ff):return c_int32(ff ^ c_int32((c_int32(255 & e[o + 2])) << 16))if array_len == 1:f = case1(f)if array_len == 2:f = case1(case2(f))if array_len == 3:f = case1(case2(case3(f)))f = c_int32(f ^ unsigned_right_shitf(f, 13))f = 1540483477 * (c_int32(65535 & f)) + c_int32((c_int32(1540483477 * unsigned_right_shitf(f, 16) & 65535)) << 16)f = c_int32(f ^ unsigned_right_shitf(f, 15))print("result:", f)return c_int32(unsigned_right_shitf(f, 0) ^ 1540483477)if __name__ == '__main__':murmurhash2(list(b'123abc'), int(time.time()*1000))

murmurhash2算法python3版本相关推荐

  1. 2021-03-15 数据挖掘算法—K-Means算法 Python版本

    数据挖掘算法-K-Means算法 Python版本 简介 又叫K-均值算法,是非监督学习中的聚类算法. 基本思想 k-means算法比较简单.在k-means算法中,用cluster来表示簇:容易证明 ...

  2. 2021-01-28 粒子群优化算法-Python版本和Matlab函数 particleswarm 调用

    粒子群优化算法-Python版本和Matlab函数 particleswarm 调用 前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab ...

  3. linux环境切换python3版本

    linux环境切换python3版本 在linux环境下既安装了python3.5又安装了python3.7,在安装库函数的时候有时候会遇到版本不兼容问题,例如有些库函数要求当前的python环境必须 ...

  4. ubuntu 刚更改默认python3版本后更新包等

    ubuntu 刚更改默认python3版本后更新包等 一般来说ubuntu 刚更改为python3为默认版本后要进行一下更新包等等的内容(当然不更新一下也是可以的,最好更新一下,第一次更新较慢) 使用 ...

  5. ride.py在运行python3.×版本后导致无法运行及解决办法

    最近一直在自学python自动化,网上看到rf框架挺适合初学自动化测试,于是通过虫师的搭建了rf框架, 但是在使用过程中遇到了一个问题,在网上没有找到明确解决办法于是想到记录一下 之前为了搭建rf框架 ...

  6. cs231n课程资料Python Numpy Tutorial的Python3版本

    cs231n课程资料Python Numpy Tutorial的Python3版本 cs231n课程提供了一个python numpy tutorial的教程,非常不错.之前看过,这些天又想爬虫和数据 ...

  7. LibcSearcher找不到合适的libc(更新到python3版本Libc)

    LibcSearcher找不到合适的libc(更新到python3版本Libc) 如果你是用的基于python2的LibcSearcher,可以安装python3版本的libcsearcher htt ...

  8. python2和python3版本的区别

    日常工作中,可能遇到一些python2和python3版本不一致到来的问题,简单整理下. 特点一:Python 3.0 在设计的时候没有考虑向下相容的,python2版本在python3上运行,可能会 ...

  9. mac 安装python并切换到python3版本

    背景 一般情况下mac系统自带python2版本,但我们学习工作时用的都是python3,因此需要安装python3并且切换到python3版本. 一.安装python3 如果已安装过homebrew ...

最新文章

  1. idea中项目失去svn控制
  2. iOS开发核心动画之画图板
  3. MOSS 2007 User Profile 系列 索引
  4. Cloud for Customer的工作中心(work center)加载器
  5. [转]JavaScript:只能输入数字(IE、FF)
  6. 超级卡特兰数(bzoj 4706: B君的多边形)
  7. 生信技能树课程记录笔记(四)20220527
  8. 嵌入式单片机基础篇(五)之stm32F1以及51单片机时钟详解
  9. zscore标准化步骤_几种常用数据标准化方法
  10. 怎么把mp4转换成mp3?
  11. 飞冰 前端开发的一些坑
  12. iOS 15增加更多新的小组件
  13. 计算机专业可以买台式机吗,现在还有必要买台式电脑吗?
  14. Html按钮调用手机静音,静音/取消静音没有按钮HTML5
  15. 搭建mysql数据库脚本语言_二十二、创建数据库脚本
  16. AD936x_增益控制AGC详解
  17. 17 geth客户端了解和安装
  18. Winhex数据粘贴方法
  19. 超市销售数据分析python_基于Python的超市O2O营销数据分析
  20. CIELab图像的通道分解与合成

热门文章

  1. 自定义View高仿懂球帝我是教练效果
  2. happypack 原理解析
  3. 喊山 (bfs)邻接表存
  4. 赶紧排查这个零日漏洞!全球已有130多家企业组织中招
  5. 转:2020-21软件测试中的重要趋势及应对措施
  6. C# StackTrace
  7. Unity预制体Prefab及其实例化(Instantiate)
  8. Android面试知识点总结宝典助你通关!成功入职阿里
  9. python逻辑运算的一些流程图_Python猜数小游戏
  10. 什么是事件时间和处理时间?