aes是服務端和客戶端共用乙個秘鑰k,client端進行加密,服務端用秘鑰進行解密。下面是python**進行加密的過程
import base64
import requests
from cryptography.hazmat.primitives import padding
from cryptography.hazmat.primitives.ciphers import algorithms
from crypto.cipher import aes
from binascii import b2a_hex
# 此處傳入後台的秘鑰
str_key = "
encodestr = base64.b64decode(str_key.encode('utf-8'))
class accesstoken:
def __init__(self, key=encodestr):
# 對傳入的秘鑰等進行初始化
self.key = key.encode('utf-8')
# 加密模式
self.mode = aes.mode_cbc
self.iv = encodestr
@staticmethod
def pkcs7_padding(data):
if not isinstance(data, bytes):
data = data.encode()
padder = padding.pkcs7(algorithms.aes.block_size).padder()
padded_data = padder.update(data) + padder.finalize()
return padded_data
# python的aes加密演算法
def encrypt_aes(self, password):
cryptor = aes.new(self.key, self.mode, self.iv)
text = password.encode('utf-8')
text = self.pkcs7_padding(text)
ciphertext = cryptor.encrypt(text)
return (b2a_hex(ciphertext).decode().lower())
# 使用者登入
def custome_login(self, username, password):
# 對密碼加密
password = self.encrypt_aes(password)
# host_url 登入位址
url = "%s&username=%s&password=%s" % (
host_url, username,password)
# 向後台傳送請求
resp = requests.post(url, headers=headers, verify=false)
data = json.loads(resp.text)["data"]
# 判斷介面請求是否成功,此處可以做乙個try...except...操作
if data:
# 將後台的介面返回值獲取token值,根據自己專案來
token = json.loads(resp.text)["data"]["centertokendto"]["token"]
access_token =
return access_token
# 如果沒有成功,將錯誤資訊返回
return json.loads(resp.text)["message"]
python實現AES演算法
usr bin python coding utf 8 from crypto.cipher import aes from binascii import b2a hex,a2b hex class aes 自己實現了乙個aes類,用於aes的加密和解密 def init self,key,mod...
解決OpenFetion突然無法登入問題
摘要 openfection是什麼東東就不用我多提了.最近在ubuntu裡面想給朋友發個飛信時,發現openfection不能正常登入了 密碼正確卻無法登入 於是google了下,發現此軟體需要 有空清理一下家目錄下面的.openfetion目錄 於是問題解決了.本文的目的是記錄一下這個事件,以及解...
解決Ubuntu桌面迴圈登入問題
ubuntu安裝了英偉達顯示卡驅動後,有時候驅動程式出錯就會導致桌面迴圈登入問題並且解析度很低。解決辦法 重灌英偉達驅動。一.按alt ctrl f1切換到字元介面,解除安裝已有的nvidia驅動程式 sudo apt get remove purge nvidia 注意一下purge前面是兩個減號...