如題,完美支援utf-8
#coding: utf8
import sys
from crypto.cipher import aes
from binascii import b2a_hex, a2b_hex
class prpcrypt():
def __init__(self, key):
self.key = key
self.mode = aes.mode_cbc
#加密函式,如果text不是16的倍數【加密文字text必須為16的倍數!】,那就補足為16的倍數
def encrypt(self, text):
cryptor = aes.new(self.key, self.mode, self.key)
text = text.encode("utf-8")
#這裡金鑰key 長度必須為16(aes-128)、24(aes-192)、或32(aes-256)bytes 長度.目前aes-128足夠用
length = 16
count = len(text)
add = length - (count % length)
text = text + (b'\0' * add)
self.ciphertext = cryptor.encrypt(text)
#因為aes加密時候得到的字串不一定是ascii字符集的,輸出到終端或者儲存時候可能存在問題
#所以這裡統一把加密後的字串轉化為16進製制字串
return b2a_hex(self.ciphertext).decode("ascii")
#解密後,去掉補足的空格用strip() 去掉
def decrypt(self, text):
cryptor = aes.new(self.key, self.mode, self.key)
plain_text = cryptor.decrypt(a2b_hex(text))
return plain_text.rstrip(b'\0').decode("utf-8")
if __name__ == '__main__':
pc = prpcrypt('keyskeyskeyskeys') #初始化金鑰
e = pc.encrypt("my book is free")
d = pc.decrypt(e)
print (e, d)
e = pc.encrypt("我是乙個粉刷匠1231繁體testひらがな")
d = pc.decrypt(e)
print (e, d)
在python3 5下安裝scrapy包
此前scrapy只支援python2.x 但是最新的1.1.0rc1已結開始支援py3了 如果電腦上安裝了scrapy的依賴包,諸如lxml openssl 2.然後 pip install wheel pip install scrapy 1.1.0rc1 py3 none any.whl 3.至...
在python3 5中使用OpenCV的例項講解
最近在opencv的官方文件上看到乙個人臉識別的示例 想要實現。由於我之前下好的opencv3.1中並不自帶相關的函式,即opencv2 contrib contrib.hpp這個檔案找不到。需要 乙個contrib的擴充套件包,然後再用cmake進行編譯,最終才能使用。於是,就去官網上下了乙個op...
寫了乙個八皇后解法
先用最笨的窮舉法求解,有空再研究更好的解法 coding gb2312 size 8 棋盤大小 empty o 空位 queen x 皇后 檢視棋盤的資訊 defshow board cols fori inrange 1,size 1 for j in range 1,size 1 if j co...