关于仿照js写python算法
前言
我们学校的统一认证的登录系统,用了一套不知道哪弄来的 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行
关于仿照js写python算法的更多相关文章
- 程序代写, CS代写, 代码代写, CS编程代写, java代写, python代写, c++/c代写, R代写, 算法代写, web代写
互联网一线工程师程序代写 微信联系 当天完成 查看大牛简介特色: 学霸代写,按时交付,保证原创,7*24在线服务,可加急.用心代写/辅导/帮助客户CS作业. 客户反馈与评价 服务质量:保证honor ...
- CS代码代写, 程序代写, java代写, python代写, c/c++代写,csdaixie,daixie,作业代写,代写
互联网一线工程师程序代写 微信联系 当天完成特色: 互联网一线工程师 24-48小时完成.用心代写/辅导/帮助客户CS作业. 客户反馈与评价 服务质量:保证honor code,代码原创.参考课程sl ...
- 用Node.js写爬虫,撸羞羞的图片
说到爬虫,很多人都认为是很高大上的东西.哇塞,是不是可以爬妹纸图啊,是不是可以爬小片片啊.答案就是对的.爬虫可以完成这些东西的操作.但是,作为一个正直的程序员,我们要在法律允许范围内用爬虫来为我们服务 ...
- [纯C#实现]基于BP神经网络的中文手写识别算法
效果展示 这不是OCR,有些人可能会觉得这东西会和OCR一样,直接进行整个字的识别就行,然而并不是. OCR是2维像素矩阵的像素数据.而手写识别不一样,手写可以把用户写字的笔画时间顺序,抽象成一个维度 ...
- Python算法:推导、递归和规约
Python算法:推导.递归和规约 注:本节中我给定下面三个重要词汇的中文翻译分别是:Induction(推导).Recursion(递归)和Reduction(规约) 本节主要介绍算法设计的三个核心 ...
- python算法题 python123网站单元四题目
目录 一:二分法求平方根 二:Collatz猜想 三:算24(只考虑满足,不考虑把所有情况找出来) 下面向大家介绍几个python算法题. 一:二分法求平方根 1.题目要求为 2.输入输出格式为 ...
- 对比Node.js和Python 帮你确定理想编程解决方案!
世上没有最好的编程语言.有些编程语言比其他编程语言用于更具体的事情.比如,你可能需要移动应用程序,网络应用程序或更专业化的系统,则可能会有特定的语言.但是我们暂时假设你需要的是一个相对来说比较简单的网 ...
- 5 年 Python 的我,总结了这 90 条写 Python 程序的建议
自己写 Python 也有四五年了,一直是用自己的“强迫症”在维持自己代码的质量.都有去看Google的Python代码规范,对这几年的工作经验,做个简单的笔记,如果你也在学pythpn,准备要学习p ...
- python算法常用技巧与内置库
python算法常用技巧与内置库 近些年随着python的越来越火,python也渐渐成为了很多程序员的喜爱.许多程序员已经开始使用python作为第一语言来刷题. 最近我在用python刷题的时候想 ...
- 使用C/C++写Python模块
最近看开源项目时学习了一下用C/C++写python模块,顺便把学习进行一下总结,废话少说直接开始: 环境:windows.python2.78.VS2010或MingW 1 创建VC工程 (1) 打 ...
随机推荐
- Lua 支持虚函数的解决方案
概述 lua本身没有提供类似C++虚函数机制,调用的父类方法调用虚函数可能会出现问题. 问题分析 分析这段代码和输出 local Gun = {} -- 示例,实际应用还要考虑构造,虚表等情况 fun ...
- AD画板从头开始
AD画板从头开始 前言 近期认真的画了一次板子,以前虽然也画过,但是都是很随意的,这次是做一个小项目,然后因为有一段时间没有画板了,发现自己很多基础的东西都忘记了,这里就来记录一下从头到尾的过程.本次 ...
- HTTP和Servlet快速入门
目录 1.HTTP 1.1 请求数据格式 1.2 相应数据格式 2.Servlet 3.Servlert的xml配置 1.HTTP 1.1 请求数据格式 请求行:请求数据的第一行 包含三个内容,按顺序 ...
- [AI]-模型测试和评价指标
模型测试 import cv2 from torchvision import transforms, datasets, models from torch.utils.data import Da ...
- github配置添加SSH秘钥
在 github 上添加 SSH key 的步骤: 1.首先需要检查你电脑是否已经有 SSH key 运行 git Bash 客户端,输入如下代码: $ cd ~/.ssh $ ls 这两个命令就是检 ...
- MySQL之pt-query-digest分析慢查询日志的详情介绍
一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdu ...
- 面试突击86:SpringBoot 事务不回滚?怎么解决?
在 Spring Boot 中,造成事务不自动回滚的场景有很多,比如以下这些: 非 public 修饰的方法中的事务不自动回滚: 当 @Transactional 遇上 try/catch 事务不自动 ...
- Python中class内置方法__init__与__new__作用与区别探究
背景 最近尝试了解Django中ORM实现的原理,发现其用到了metaclass(元类)这一技术,进一步又涉及到Python class中有两个特殊内置方法__init__与__new__,决定先尝试 ...
- CF600E Lomsat gelral (线段树合并)
相当于是线段树合并的模板题,比(雨天的尾巴)还要板. 唯一注意的是线段树的更新,因为同一子树中可能有多种颜色占主导地位,要输出编号和,比如一颗子树中,1出现3次(最多),3出现3次,那么应该输出4. ...
- Java学习之路:Dos命令
2022-10-08 10:25:42 (一)打开CMD的方式 开始+系统+命令提示符 Win+R 输入cmd打开控制台 在任意的文件夹下面,按住Shift+鼠标右键,点击在此打开命令行窗口 资源 ...