关于仿照js写python算法
2024-09-08 17:21:54
前言
我们学校的统一认证的登录系统,用了一套不知道哪弄来的 js加密算法 (我已经查到了,应该是出自这里 地址),有一个参数是通过 js 计算得到的,无奈我先想模拟登录就必须解决这个算法,这个说明是des, 但是和python中的第三方库提供的des算法根本不一样,所以我通过 python 又实现了一遍这个 js 算法
心得
首先要知道 js的几个函数对应 python 中的哪些函数
s 表示字符串,a或b表示索引
剩下的大部分就是写一些逻辑 比如 js 中的 switch-case 可以用python中的 if-elif 来替代
另外就是 js 中复杂的 for循环在python中如何实现,几个例子
for (m = 15; m > j; m--) {
pow *= 2;
}
python中的实现
for m in range(15,j,-1):
pow_ *= 2
这里当然要注意 在 python中的关键字 pow,所以我更改了一下他的名字
for (i = 0, m = 1, n = 0; i < 4; i++, m += 2, n += 2) {
for (j = 7, k = 0; j >= 0; j--, k++) {
ipByte[i * 8 + k] = originalData[j * 8 + m];
ipByte[i * 8 + k + 32] = originalData[j * 8 + n];
}
}
for i in range(0,4):
k = 0
for j in range(7,-1,-1):
ipByte[i * 8 + k] = originalData[j * 8 + m]
ipByte[i * 8 + k + 32] = originalData[j * 8 + n]
k += 1
m += 2
n += 2
除了以上的坑 在 python实现js算法最大的坑就是声明数组,js中声明数组
var tempLeft = new Array(32);
tempLeft = [0 for i in range(32)]
我通过 python 列表来代替 js 中的数组,初始化都为零
如果不进行初始化 直接 tempLeft = []
,在后面给 数组中的元素赋值过程中肯定会报错,但是在js中是不会报错的
所以这里必须,声明 32个元素都为零,让元素存在
所以最坑的是js声明不确定元素多少的数组
var tempLeft = new Array();
这种就没办法了,只能通过逻辑判断声明对应大小的数组
通过以上这些方法,我将 900多行的 js 代码成功的翻译成了python的 500行
最新文章
- JavaScript 面向对象(一) —— 基础篇
- IOS从视频中获取截图
- 良精南方cms /inc/Check_Sql.asp SQL Injection Based On Cookie
- poj 2262【素数表的应用---判断素数】【哈希】
- ORACLE SEQUENCE用法
- xcode 产生指定颜色的图片imageWithColor
- 怎样解决VirtrualBox不能新建64bit的系统的问题
- jquery中的ajax方法详解
- 使用md5判断网站内容是否被篡改
- WampServer:轻松配置Wordpress安装环境
- jQuery选择器中的空格问题
- 在Intellij IDEA 中clean报错:-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.
- Linux:Linux Mint系统的安装
- 机器学习基石笔记:03 Types of Learning
- [P2996][USACO10NOV]拜访奶牛Visiting Cows (树形DP)
- Hive深入学习--应用场景及架构原理
- 菜鸟学Java(三)——JSTL标签之核心标签
- matplot 代码实例2
- python set() 集合的添加删除、交集、并集、差集、交叉补集、集合的方法介绍以及使用案例
- android view的 绘制流程