公司對外提供了http介面服務,涉及到了des加密,有客戶用Python開發,但搞不定加密,客戶的問題就是大問題,雖然以前沒接觸過Python,也只能硬著頭皮上,不停的baidu各種資料,從環境搭建、到hello world、最後到des加密實現,終於在半天之內幫客戶搞定。感嘆Python強大的類庫 ...
公司對外提供了http介面服務,涉及到了des加密,有客戶用Python開發,但搞不定加密,客戶的問題就是大問題,雖然以前沒接觸過Python,也只能硬著頭皮上,不停的baidu各種資料,從環境搭建、到hello world、最後到des加密實現,終於在半天之內幫客戶搞定。感嘆Python強大的類庫,幾行代碼搞定穩定,大家網上分享自己的各種經驗關鍵時候真能幫上大忙,遇到各種問題都能搞定。以下是記錄自己從Python零基礎到實現des加密的過程,留作備忘與和我一樣遇到類似問題的朋友。
- 安裝python環境
- 安裝IDE(Eclipse+PyDev)
- hello world實現
- des加密實現
安裝python環境
python可以從python官網下載。
遇到問題:python版本的選擇,從官網看主要有2.x和3.x,而且都在更新,翻看資料大概看了看,兩個版本有差別,考慮到我看的教程用的2.7.15,果斷選擇了同樣的版本。下載“Windows x86-64 MSI installer(for AMD64/EM64T/x64)”並安裝,一路next安裝完成。配置環境變數
這個對安裝過java的程式員來說是輕車熟路,稍微提一下,如果安裝python時,勾選“Add Python to PATH”可以省去這一步。
配置好後win+r,輸入cmd,輸入python,輸出“Python 2.7.15”,環境配置成功。
安裝IDE(Eclipse+PyDev)
- 安裝插件
網上查了下,python IDE還真不少,之前本地安裝了Eclipse,選擇Eclipse+PyDev方案。
Eclipse本地早已安裝好,直接在Eclipse安裝PyDev插件。步驟:
Eclipse菜單 -> Help -> Install New Software... -> Work with (Add..)
Name:PyDev
Location:http://pydev.org/updates
安裝問題
一路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版本一步。配置插件
Eclipse和Python關係:
Eclipse菜單 -> Windows ->Preferences -> PyDev-> Interpreters - Python Interpreter.
點擊New按鈕,選擇python.exe的路徑(第1步安裝Python的路徑),打開後顯示出一個包含很多覆選框的視窗,點OK結束!
hello world實現
- 編寫hello world
按照網上的操作步驟,添加一個項目DesTest,添加package,添加Module命名hello.py,代碼如下:
# -*- coding: UTF-8 -*-
print("Hello world");
遇到問題:java思維嚴重,一直想著怎麼添加一個class文件,沒有,仔細看了下資料才發現應該是添加Module。
- 運行代碼
右鍵 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完整代碼如下:
```Python
# -- 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,快速熟悉語法全靠它了。