「Python實用秘技11」在Python中利用ItsDangerous快捷實現數據加密

本文完整示例程式碼及文件已上傳至我的Github倉庫//github.com/CNFeffery/PythonPracticalSkills

  這是我的系列文章「Python實用秘技」的第11期,本系列立足於筆者日常工作中使用Python積累的心得體會,每一期為大家帶來一個幾分鐘內就可學會的簡單小技巧。

  作為系列第11期,我們即將學習的是:在Python中快捷加密數據。

  數據安全作為老生常談的話題,是我們日常使用Python進行諸如web應用開發等任務時繞不開的話題,我們希望通過網路傳輸一些數據的同時,還可以保證數據的安全,畢竟將一些敏感的數據傳輸到未知的環境中進行使用是非常危險的事情。

  而通過使用PythonItsDangerous,我們就可以高效快捷地完成數據加密/解密的過程,它隸屬於palltes項目計劃,該項目計劃中也包含了FlaskJinjaQuart等知名的web開發相關項目:

  通過pip install itsdangerous完成安裝後,我們就可以使用它來加密/解密數據了,雖然其提供了種類相當多的方法來滿足各種數據加密/解密場景,但我們日常只需要用到其兩個API介面就足夠了:

  • 常規的數據加密/解密

  最常見的場景下,我們通過已有的密鑰,利用URLSafeSerializer()構建序列化器,即可將數據轉化為加密結果:

  而針對加密後的結果,使用相同的密鑰構建序列化器進行解密即可:

  • 可超時失效的數據加密/解密

  有些場景下,我們希望加密生成的數據,從其生成開始的時間點算起,經歷若干時間後超時報廢,則可以使用URLSafeTimedSerializer(),其用法與URLSafeSerializer()基本一致,只是在loads()解密數據時特別地可設置參數max_age,當解密時距離此加密結果生成的時間超過max_age對應的秒數,則會觸發錯誤:

  這樣就可以滿足日常絕大多數使用場景了😊,有關ItsDangerous的更多進階內容請移步其官網//itsdangerous.palletsprojects.com/


  本期分享結束,咱們下回見~👋