公司对外提供了http接口服务,涉及到了des加密,有客户用Python开发,但搞不定加密,客户的问题就是大问题,虽然以前没接触过Python,也只能硬着头皮上,不停的baidu各种资料,从环境搭建、到hello world、最后到des加密实现,终于在半天之内帮客户搞定。感叹Python强大的类库,几行代码搞定稳定,大家网上分享自己的各种经验关键时候真能帮上大忙,遇到各种问题都能搞定。以下是记录自己从Python零基础到实现des加密的过程,留作备忘与和我一样遇到类似问题的朋友。

  • 安装python环境
  • 安装IDE(Eclipse+PyDev)
  • hello world实现
  • des加密实现

安装python环境

  1. python可以从python官网下载。

    遇到问题:python版本的选择,从官网看主要有2.x和3.x,而且都在更新,翻看资料大概看了看,两个版本有差别,考虑到我看的教程用的2.7.15,果断选择了同样的版本。下载“Windows x86-64 MSI installer(for AMD64/EM64T/x64)”并安装,一路next安装完成。

  2. 配置环境变量

    这个对安装过java的程序员来说是轻车熟路,稍微提一下,如果安装python时,勾选“Add Python to PATH”可以省去这一步。

    配置好后win+r,输入cmd,输入python,输出“Python 2.7.15”,环境配置成功。

安装IDE(Eclipse+PyDev)

  1. 安装插件

    网上查了下,python IDE还真不少,之前本地安装了Eclipse,选择Eclipse+PyDev方案。

    Eclipse本地早已安装好,直接在Eclipse安装PyDev插件。步骤:

Eclipse菜单 -> Help -> Install New Software... -> Work with (Add..)

Name:PyDev

Location:http://pydev.org/updates

  1. 安装问题

    一路next,finish,安装成功后竟然看不到插件,几番百度下来,发现Eclipse和PyDev有个版本对应关系,参考解决安装成功看不到插件,把上图中的Location改为“http://www.pydev.org/update_sites/old/” ,同时把上图中第一个复选框“Show only the lastest versions of availabele soft”的勾选去掉。Eclipse和PyDev版本对应关系Python官网有介绍。



    这里还有个小插曲,以为插件安装点完finish就安装完毕了,立马重启Eclipse,其实不是,应该还有个下载安装的过程,尤其是网速比较慢的情况下,Eclipse窗口右下角会显示“Installing Software 31%”,还会有确认窗口和重启Eclipse提示。这步也浪费了不少时间,可能这一步对的话能省掉选择Python版本一步。

  2. 配置插件

Eclipse和Python关系:

Eclipse菜单 -> Windows ->Preferences -> PyDev-> Interpreters - Python Interpreter.

点击New按钮,选择python.exe的路径(第1步安装Python的路径),打开后显示出一个包含很多复选框的窗口,点OK结束!

hello world实现

  1. 编写hello world

    按照网上的操作步骤,添加一个项目DesTest,添加package,添加Module命名hello.py,代码如下:
# -*- coding: UTF-8 -*-
print("Hello world");

遇到问题:java思维严重,一直想着怎么添加一个class文件,没有,仔细看了下资料才发现应该是添加Module。

2. 运行代码

右键 Run As -> Python Run,输出Hello world,执行成功。

遇到问题:报错“SyntaxError: Non-ASCII character '\xca'”,中文编码问题,需要添加“# -- coding: UTF-8 --”。

到这一步,感觉看到曙光了,环境已经准备好,剩余工作就是搞定Des加密类库,生成合适的参数,调试结果了。

des加密实现

实现起来并不难,主要是用到了pyDes库,下载pyDes-1.3.1.zip并解压,里面有setup.py文件,使用命令python setup.py install命令安装即可。

实现des完整代码如下:

# -*- coding: UTF-8 -*-
from pyDes import *
import base64
from string import lower # Des加密算法封装
def desFacade(data, token):
#不足8位则用数字0补足至8位
token = token + "00000000";
#加密KEY为经纪云KEY密文前8位
key = token.lower()[0:8];
print "Decypted string: %r" % key;
k = des(key, CBC, key, pad=None, padmode=PAD_PKCS5);
desString = k.encrypt(data);
d = base64.b64encode(desString);
return d; passwork = "qawsed";
fangToken = "jjRxxxxxyxy";
print "Decypted string: %r" % desFacade(passwork, fangToken)
#结果O1lDo+QTAL4=
assert desFacade(passwork, fangToken) == "O1lDo+QTAL4=" ;

参考教程:http://www.runoob.com/python/python-tutorial.html,快速熟悉语法全靠它了。

快速搭建python程序的更多相关文章

  1. EMAS Serverless系列~4步教你快速搭建小程序

    体验简介 本实验基于 EMAS Serverless 的云函数.云数据库.云存储等云服务能力一站式快速开发小程序<私人云相册>.Demo 主要包括如下功能: 1 相册管理 2 上传相片 3 ...

  2. 测开之路一百二十三:快速搭建python虚拟环境

    前提:已装好python3.4+且环境可正常运行 一:手动搭建: 准备好一个工作目录 管理员运行cmd,进入到准备的目录里面 执行命令:python -m venv 虚拟环境名 激活虚拟环境(在ven ...

  3. 十分钟快速搭建Python+Selenium自动化测试环境(含视频教程)

    文章首发于微信公众号:爱码小哥 准备安装包: 一:安装python:   双击python-3.7.6.exe执行文件 2.点击下一步正在安装: 3.如图所示表示安装完成: 校验环境是否安装成功:   ...

  4. Python学习:1.快速搭建python环境

    一.安装python 现在python有两个比较大的版本一个是python3.x一个是python2.x,python3.x相当于与python2.x是一个比较大的升级,但是python3.x没有向下 ...

  5. flow.ci + Github + Slack 一步步搭建 Python 自动化持续集成

    理想的程序员必须懒惰,永远追随自动化法则.Automating shapes smarter future. 在一个 Python 项目的开发过程中可能会做的事情:编译.手动或自动化测试.部署环境配置 ...

  6. 使用sublime text3搭建Python编辑环境

    最近在工作遇到一个难题. 我所在的测试组有一套PC软件前端自动化工程,在进行自动化测试时,需要在一台古老的xp机器上运行,但这台古老的xp机器带给我诸多烦恼,特别是使用Pycharm编辑器时,我遇到了 ...

  7. 程序员带你十天快速入门Python,玩转电脑软件开发(二)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  8. java程序员快速掌握python系列——概述

    这一系列主要是总结学习python过程中的方方面面(已经学完,时间大概是一周左右).当然限于个人水平java也就是够用,python短时间内也不可能深入到哪里去.所以这次的分享的目的是能够快速使用py ...

  9. 程序员带你十天快速入门Python,玩转电脑软件开发(四)

    本系列文章立志于从一个已经习得一门编程语言的基础之上,全面介绍Python的相关开发过程和相关经验总结.本篇文章主要是基于上一篇的程序员带你十天快速入门Python,玩转电脑软件开发(三)的基础之上, ...

随机推荐

  1. Google Hack搜索技巧

    想了解更多搜索技巧,点击下面网站了解http://exploit-db.com/google-dorks Google Hack的一些整理 这里是google关键字的用法,要设置它为中文,则是 htt ...

  2. .NET Framework 4 与.NET Framework 4 Client Profile有什么区别?

    .net framework 自从 2002 年发展至今,已经历了好几个版本,1.0, 1.1, 2.0, 3.0, 3.5 等不同的版本更替,.net framework 的Redistributa ...

  3. 如何在debug vue-cli建立的项目

    因为vue-cli使用了webpack,导致了一些页面报错了位置不精确的问题. 在网上找到了解决方案,在此分享. https://segmentfault.com/q/1010000008757714 ...

  4. 移动端页面:viewport与分辨率的坑

    <meta name="viewport" content="width=device-width, user-scalable=no"> < ...

  5. c c++ #define 定义假函数

    #define   Add(a,b)   ((a)+(b)) #define Max(a,b) ((a)>(b)?(a):(b)) 这就定义了一个假的函数 说白了就是字符串替换 这样在写代码时能 ...

  6. c c++ 函数不要返回局部变量的指针

    结论:普通的变量(非new的变量)都是系统自动分配的,在栈空间(连续分配),无需程序员操作,速度快,但是...空间有限,不适合大量数据,大量的话就需要自己new new出来的变量是处于大容量的堆空间, ...

  7. 一道c++面试题 输入一个维度,逆时针打印出一个指定的矩阵

    题目:逆时针打印矩阵元素 #include <stdio.h> #include <malloc.h> int main() { int dimension; int *p; ...

  8. ios开发中字符串的常用功能总结

    1.分割字符串 NSString * str1 = @"123/456"; NSArray * arr1 = [str1 componentsSeparatedByString:@ ...

  9. javaScript系列 [01]-javaScript函数基础

    [01]-javaScript函数基础 1.1 函数的创建和结构 函数的定义:函数是JavaScript的基础模块单元,包含一组语句,用于代码复用.信息隐蔽和组合调用. 函数的创建:在javaScri ...

  10. Eclipse中jsp和html格式化自动排版问题

    删除inline Elements 中所有的元素 http://m.codes51.com/article/detail_197472.html