有許多程式碼目的是支援其他程式碼-例如,設定其他函數輸入值或是對輸出值後續處理。
有個Python字典存放敏感的使用者資訊,於是先使用Cipher類別加密字典中的資訊。
user_info = {"username": "..","password":"..."}
user_str = json.dumps(user_info)
cipher = Cipher("aes_128_cbc",key=PRIVATE_KEY,init_vector=INIT_VECTOR,op=ENCODE)
encrypted_bytes = cipher.update(user_str)
encrypted_bytes += cipher.final() //傾印目前的128位元區塊
url = "http://example.com/?user_info=" + base64.urlsafe_b64encode(encrypted_bytes)
絕大部分程式碼卻是在處理「加密 Python 物件並轉換為符合 URL 規範的字串」,很容易就可以抽離這子問題:
def url_safe_encrypt(obj):
obj_str = json.dump(obj)
cipher = Cipher("aes_128_cbc",key=PRIVATE_KEY,init_vector=INIT_VECTOR,op=ENCODE)
encrypted_bytes = cipher.update(user_str)
encrypted_bytes += cipher.final() //傾印目前的128位元區塊
return base64.urlsafe_b64encode(encrypted_bytes)
如此一來,就能簡化執行真正邏輯程式碼:
user_info = {"username": "..","password":"..."}
url = "http://example.com/?user_info=" + url_safe_encrypt(user_info)