murmurhash2算法python3版本
在翻译加密代码时遇到这个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版本相关推荐
- 2021-03-15 数据挖掘算法—K-Means算法 Python版本
数据挖掘算法-K-Means算法 Python版本 简介 又叫K-均值算法,是非监督学习中的聚类算法. 基本思想 k-means算法比较简单.在k-means算法中,用cluster来表示簇:容易证明 ...
- 2021-01-28 粒子群优化算法-Python版本和Matlab函数 particleswarm 调用
粒子群优化算法-Python版本和Matlab函数 particleswarm 调用 前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab ...
- linux环境切换python3版本
linux环境切换python3版本 在linux环境下既安装了python3.5又安装了python3.7,在安装库函数的时候有时候会遇到版本不兼容问题,例如有些库函数要求当前的python环境必须 ...
- ubuntu 刚更改默认python3版本后更新包等
ubuntu 刚更改默认python3版本后更新包等 一般来说ubuntu 刚更改为python3为默认版本后要进行一下更新包等等的内容(当然不更新一下也是可以的,最好更新一下,第一次更新较慢) 使用 ...
- ride.py在运行python3.×版本后导致无法运行及解决办法
最近一直在自学python自动化,网上看到rf框架挺适合初学自动化测试,于是通过虫师的搭建了rf框架, 但是在使用过程中遇到了一个问题,在网上没有找到明确解决办法于是想到记录一下 之前为了搭建rf框架 ...
- cs231n课程资料Python Numpy Tutorial的Python3版本
cs231n课程资料Python Numpy Tutorial的Python3版本 cs231n课程提供了一个python numpy tutorial的教程,非常不错.之前看过,这些天又想爬虫和数据 ...
- LibcSearcher找不到合适的libc(更新到python3版本Libc)
LibcSearcher找不到合适的libc(更新到python3版本Libc) 如果你是用的基于python2的LibcSearcher,可以安装python3版本的libcsearcher htt ...
- python2和python3版本的区别
日常工作中,可能遇到一些python2和python3版本不一致到来的问题,简单整理下. 特点一:Python 3.0 在设计的时候没有考虑向下相容的,python2版本在python3上运行,可能会 ...
- mac 安装python并切换到python3版本
背景 一般情况下mac系统自带python2版本,但我们学习工作时用的都是python3,因此需要安装python3并且切换到python3版本. 一.安装python3 如果已安装过homebrew ...
最新文章
- idea中项目失去svn控制
- iOS开发核心动画之画图板
- MOSS 2007 User Profile 系列 索引
- Cloud for Customer的工作中心(work center)加载器
- [转]JavaScript:只能输入数字(IE、FF)
- 超级卡特兰数(bzoj 4706: B君的多边形)
- 生信技能树课程记录笔记(四)20220527
- 嵌入式单片机基础篇(五)之stm32F1以及51单片机时钟详解
- zscore标准化步骤_几种常用数据标准化方法
- 怎么把mp4转换成mp3?
- 飞冰 前端开发的一些坑
- iOS 15增加更多新的小组件
- 计算机专业可以买台式机吗,现在还有必要买台式电脑吗?
- Html按钮调用手机静音,静音/取消静音没有按钮HTML5
- 搭建mysql数据库脚本语言_二十二、创建数据库脚本
- AD936x_增益控制AGC详解
- 17 geth客户端了解和安装
- Winhex数据粘贴方法
- 超市销售数据分析python_基于Python的超市O2O营销数据分析
- CIELab图像的通道分解与合成