前言

我们学校的统一认证的登录系统,用了一套不知道哪弄来的 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行

最新文章

  1. JavaScript 面向对象(一) —— 基础篇
  2. IOS从视频中获取截图
  3. 良精南方cms /inc/Check_Sql.asp SQL Injection Based On Cookie
  4. poj 2262【素数表的应用---判断素数】【哈希】
  5. ORACLE SEQUENCE用法
  6. xcode 产生指定颜色的图片imageWithColor
  7. 怎样解决VirtrualBox不能新建64bit的系统的问题
  8. jquery中的ajax方法详解
  9. 使用md5判断网站内容是否被篡改
  10. WampServer:轻松配置Wordpress安装环境
  11. jQuery选择器中的空格问题
  12. 在Intellij IDEA 中clean报错:-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.
  13. Linux:Linux Mint系统的安装
  14. 机器学习基石笔记:03 Types of Learning
  15. [P2996][USACO10NOV]拜访奶牛Visiting Cows (树形DP)
  16. Hive深入学习--应用场景及架构原理
  17. 菜鸟学Java(三)——JSTL标签之核心标签
  18. matplot 代码实例2
  19. python set() 集合的添加删除、交集、并集、差集、交叉补集、集合的方法介绍以及使用案例
  20. android view的 绘制流程

热门文章

  1. Bert不完全手册8. 预训练不要停!Continue Pretraining
  2. 输入法词库解析(一)百度自定义方案.def
  3. 【前端】在浏览器控制台,直接发Ajax请求
  4. Solutions:Elastic workplace 搜索:随时随地搜索所有内容 (二)
  5. Elastic App Search 入门
  6. 通过堡垒机上传文件报错ssh:没有权限的问题
  7. Beats &amp; FileBeat
  8. Java问题之超过数值表示范围(例如64位)结果是什么 (阶乘)
  9. 新零售SaaS架构:中央库存系统架构设计
  10. uoj221【NOI2016】循环之美