[python]python學習筆記(七)——加密
1,python對字串加密常見的方法:
<pre code_snippet_id="340592" snippet_file_name="blog_20140512_1_2282504" name="code" class="python">1. 最簡單的方法是用base64: import base64 s1 = base64.encodestring('hello world') s2 = base64.decodestring(s1) print s1,s2 # aGVsbG8gd29ybGQ=n # hello world 注: 這是最簡單的方法了,但是不夠保險,因為如果別人拿到你的密文,也可以自己解密來得到明文;不過可以把密文字串進行處理,如字母轉換成數字或是特殊字元等,自己解密的時候在替換回去在進行base64.decodestring,這樣要安全很多。 2. 第二種方法是使用win32com.client import win32com.client def encrypt(key,content): # key:金鑰,content:明文 EncryptedData = win32com.client.Dispatch('CAPICOM.EncryptedData') EncryptedData.Algorithm.KeyLength = 5 EncryptedData.Algorithm.Name = 2 EncryptedData.SetSecret(key) EncryptedData.Content = content return EncryptedData.Encrypt() def decrypt(key,content): # key:金鑰,content:密文 EncryptedData = win32com.client.Dispatch('CAPICOM.EncryptedData') EncryptedData.Algorithm.KeyLength = 5 EncryptedData.Algorithm.Name = 2 EncryptedData.SetSecret(key) EncryptedData.Decrypt(content) str = EncryptedData.Content return str s1 = encrypt('lovebread', 'hello world') s2 = decrypt('lovebread', s1) print s1,s2 # MGEGCSsGAQQBgjdYA6BUMFIGCisGAQQBgjdYAwGgRDBCAgMCAAECAmYBAgFABAgq # GpllWj9cswQQh/fnBUZ6ijwKDTH9DLZmBgQYmfaZ3VFyS/lq391oDtjlcRFGnXpx # lG7o # hello world 注: 這種方法也很方便,而且可以設定自己的金鑰,比第一種方法更加安全,如果對安全級別要求不太高的話這種方法是加密解密的首選之策! 3. 還有就是自己寫加密解密演算法,比如: def encrypt(key, s): b = bytearray(str(s).encode("gbk")) n = len(b) # 求出 b 的位元組數 c = bytearray(n*2) j = 0 for i in range(0, n): b1 = b[i] b2 = b1 ^ key # b1 = b2^ key c1 = b2 % 16 c2 = b2 // 16 # b2 = c2*16 + c1 c1 = c1 + 65 c2 = c2 + 65 # c1,c2都是0~15之間的數,加上65就變成了A-P 的字元的編碼 c[j] = c1 c[j+1] = c2 j = j+2 return c.decode("gbk") def decrypt(key, s): c = bytearray(str(s).encode("gbk")) n = len(c) # 計算 b 的位元組數 if n % 2 != 0 : return "" n = n // 2 b = bytearray(n) j = 0 for i in range(0, n): c1 = c[j] c2 = c[j+1] j = j+2 c1 = c1 - 65 c2 = c2 - 65 b2 = c2*16 + c1 b1 = b2^ key b[i]= b1 try: return b.decode("gbk") except: return "failed" key = 15 s1 = encrypt(key, 'hello world') s2 = decrypt(key, s1) print s1,'n',s2 # HGKGDGDGAGPCIHAGNHDGLG # hello world 注: 這是網上抄來的一個簡單的例子,大家可以自定義自己演算法進行加密解密;還有許許多多複雜的加密演算法,大家可以自行查閱密碼學的相關演算法。 4.對於python來說,也可以把python原始碼檔案編譯成pyc二進位制格式的檔案,這樣別人就看不到你的原始碼,也算是一種加密方法吧,方法如下: 執行命令python -m py_compile create_slave.py 可以直接生成一個create_slave.pyc檔案,然後可以用create_slave.pyc來替換create_slave.py作為指令碼來執行。
相關推薦
[python]python學習筆記(七)——加密
1,python對字串加密常見的方法: <pre code_snippet_id="340592" snippet_file_name="blog_20140512_1_2282504" name="code" class="python">1. 最簡單的方法
Python爬蟲學習筆記(七)——智高考數據爬取
pid items bubuko strong eai res har href name 介紹 智高考是一個高考誌願網站,也是基於Ajax的。高中的時候我在wyz大神的幫忙下,嘗試過爬取信息來為填誌願做準備。但是當時沒有系統學習過爬蟲,幾乎都是靠大神帶飛,因此今天再次嘗試
Python入門學習筆記(七) - 類
學習內容 如何編寫類並建立其例項,如何使用屬性在類中儲存資訊,以及如何編寫方法,以讓類具備所需的行為。如何編寫方法 __init__() ,以便根據類建立包含所需屬性的例項。 如何修改例項的屬性 —— 包括直接修改以及通過方法進行修改。 使用 繼承 簡化相關類的建立工作;將一個類的例項用作另一
python學習筆記(七)函數
限制 指向 什麽 問題 www. img 值傳遞 在線的 comment 原鏈接:http://www.cnblogs.com/vamei/archive/2012/06/01/2529500.html#!comments 函數學習遇到了問題 1 #!/usr/bin/
Python學習筆記(七)
cookies 常用方法 .com 人的 https 初始化 面向 cache decode 用python代碼調用接口,使用urllib模塊,但是該模塊數據必須都是2進制的,比較麻煩 from urllib.request import urlopen from url
python基礎教程(第三版)學習筆記(七)
第七章 再談抽象 自定義`類和物件 7.1 物件魔法 多型:可對不同型別的物件執行相同的操作,而這些操作就像“被施了魔法”一樣能夠正常執行。 封裝:對外部隱藏有關物件工作原理的細節。 繼承:可基於通用類創建出專用類。 7.1.1 多型 大致意味著即便你不知道變數指向的是哪種物件,也能夠對其執行操作,
Python學習筆記(七)運算子
運算子 描述 == 檢查兩個運算元的值是否 相等,如果是,則條件成立,返回True != 檢查兩個運算元的值是否 不相等,如果是,則條件成立,返回True
Python學習筆記(七)運算符
變量 操作數 python 註意 算術 大於 col 使用 group 運算符 描述 == 檢查兩個操作數的值是否 相等,如果是,則條件成立,返回True != 檢查兩個操作數的值是否 不相等,如果是,則條件成立,返回True > 檢查左操作數的值
Python中的函式---基礎學習筆記(七)
一、函式的定義與呼叫 1、函式的定義格式: def函式名(): 程式碼 2、呼叫函式:定義了函式之後,就相當於有了一個具有某更能的程式碼,想要讓這些程式碼能夠執行,需要呼叫它 呼叫函式很簡單的,通過
Python自動化學習筆記(六)——常用內置函數、os.walk了解、md5加密、連接數據庫
條件 讀取 字符 select none del 管理員 mktime rom 1.常用內置函數 print(max([1,2,3,4])) #獲取最大值print(sum([1,2,3,4])) #求和print(math.pi) #圓周率的值print(chr(6
Python學習筆記(七)—— List.sort 與二進位制搜尋bisect
程式碼及內容源自《Fluent Python》——Luciano Ramalho 著 List.sort方法會直接進行排序操作,過程中既不會複製原list,也不會生成新的list物件。 與之相反,sorted()函式則會生成並返回一個新的list。
Python Click 學習筆記(轉)
col 輸出 小工具 方法 chm 好的 put name 回調 原文鏈接:Python Click 學習筆記 Click 是 Flask 的團隊 pallets 開發的優秀開源項目,它為命令行工具的開發封裝了大量方法,使開發者只需要專註於功能實現。恰好我最近在開發的一個小
python的學習筆記(0)之循環的使用1
循環條件 back 技術分享 -s 這就是 相同 直接 用法 深入 這是我第一次正式的開始學習這門語言,雖然之前也多多少少接觸過一點,但是一直沒有深入的學習和研究過,所以我打算從今天起準備開始由淺入深的學習下這門語言。 python這門語言和其他語言相比最大的特點就
《可愛的Python》讀書筆記(七)
configparser ConfigParser 沒有最好,只有更合理!使用默認的列表打印格式來存儲和匯報實在不咋的,想著修改修改,於是:# -*- coding: utf-8 -*- import os def cdWalker(cdrom, cdcfile): export = &q
Python爬蟲學習筆記(一)——urllib庫的使用
scheme param https ade 網站 dmgr nor 分享圖片 out 前言 我買了崔慶才的《Python3網絡爬蟲開發實戰》,趁著短學期,準備系統地學習下網絡爬蟲。在學習這本書的同時,通過博客摘錄並總結知識點,同時也督促自己每日學習。本書第一章是開發環境的
Python爬蟲學習筆記(二)——requests庫的使用
pip 安裝 .text rep 瀏覽器 ror clas ade 學習筆記 準備工作 requests庫不是python自帶的庫,可以用pip安裝。在使用時導入requests即可。 基本用法 GET請求 r = requests.get(url) print(r.tex
Python爬蟲學習筆記(三)——正則表達式
斜杠 這一 seh 爬蟲 class 學習 常用方法 部分 介紹 介紹 正則表達式是一種處理字符串的強大工具,能實現字符串的檢索、替換、匹配驗證等。在爬蟲中,正則表達式主要用於從HTML裏提取所需要的信息 常用的匹配規則 模式 描述 \w 匹配字母、數字及下劃
Python自動化學習筆記(一)——介面測試基礎
1.1 介面基礎知識 1.1.1 Get&post請求 GET和POST請求: GET提交的資料會放在URL之後,以?分割URL和傳輸資料,引數之間以&相連,如EditPosts.aspx?name
python入門學習筆記(三)——切片、元組
4.操作列表 4.1遍歷整個列表:for name = ['x','y','z'] for x in name: (in後面是可迭代物件‚不要忘記:ƒ迴圈內容要縮排,縮排是靈魂) &
python入門學習筆記(二)——列表
3.列表 3.1使用列表的值 name = ['dad','sss','ff'] print(name) print(name[0]) print(name[-1].upper()) 3.2修改列表值 name[-1] = 'aa' print(name) 3