欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

django fernet fields字段加密實(shí)踐詳解

 更新時(shí)間:2019年08月12日 09:37:57   作者:休耕  
這篇文章主要介紹了django fernet fields字段加密實(shí)踐詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一、fernet介紹

Fernet 用于django模型字段對(duì)稱(chēng)加密,使用 crytography 庫(kù)。

官網(wǎng)幫助文檔

1、先決條件

django-fernet-fields 支持Django 1.8.2以及更高版本,Python 2.7、3.3、3.4、pypy和pypy3。

測(cè)試了PostgreSQL、SQLite和MySQL可用,但是任何支持BinaryField的Django數(shù)據(jù)庫(kù)后端應(yīng)該都可以運(yùn)行。

2、安裝

django-fernet-fields 在 PyPI可用,可用如下方法安裝:

pip install django-fernet-fields

二、fernet使用

1、用法示例

只需導(dǎo)入并使用模型中包含的字段類(lèi):

from django.db import models
from rbac.models import *
from fernet_fields import EncryptedCharField
class Customer(models.Model):
  """ 客戶(hù)(學(xué)生)表 """
  name = EncryptedCharField(verbose_name='姓名', max_length=64)
  gender_choices = (
    (1, '男'),
    (2, '女')
  )

可以聲明變量并和往常一樣讀取name字段的值,但是這些值在發(fā)送到數(shù)據(jù)庫(kù)之前會(huì)自動(dòng)進(jìn)行加密,并在數(shù)據(jù)庫(kù)中讀取時(shí)進(jìn)行解密。

加密和解密都將在本地應(yīng)用中執(zhí)行,密鑰永遠(yuǎn)不會(huì)發(fā)送到數(shù)據(jù)庫(kù)服務(wù)器,數(shù)據(jù)庫(kù)僅查看此字段的加密值。

2、字段類(lèi)型

常用的字段類(lèi)如下:EncryptedCharField, EncryptedEmailField, EncryptedIntegerField, EncryptedDateField, and EncryptedDateTimeField. 所有字段類(lèi)都接受與其非加密版本相同的參數(shù)。

要?jiǎng)?chuàng)建其他一些自定義字段類(lèi)的加密版本,可以從EncryptedField和其他字段類(lèi)繼承:

from fernet_fields import EncryptedField
from somewhere import MyField
class MyEncryptedField(EncryptedField, MyField):
  pass

3、可空字段

允許使用可空的加密字段; NonePython中的值被轉(zhuǎn)換為NULL數(shù)據(jù)庫(kù)列中的實(shí)數(shù)。請(qǐng)注意,這通常會(huì)在列中向攻擊者顯示數(shù)據(jù)的存在與否。如果這是您的問(wèn)題,請(qǐng)避免使用可空的加密字段; 而是在非可空加密字段中存儲(chǔ)一些其他的標(biāo)記“空”值(將像任何其他值一樣加密)。

三、索引,約束和查找

由于Fernet加密不是確定性的(使用相同密鑰加密的相同源文本每次都會(huì)導(dǎo)致不同的加密令牌),因此索引或強(qiáng)制執(zhí)行唯一性或?qū)用軘?shù)據(jù)執(zhí)行查找是無(wú)用的。每個(gè)加密值總是不同的,每次完全匹配查找都會(huì)失敗; 其他查找的結(jié)果將毫無(wú)意義。

由于這個(gè)原因,如果通過(guò)了 db_index=True,unique=True,primary_key=True,EncryptedField 將拋出 django.core.exceptions.ImproperlyConfigured。并且對(duì)于 EncryptedField 的任何類(lèi)型的查找。除了為空之外,都將拋出django.core.exceptions.FieldError。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Pandas實(shí)現(xiàn)列(column)排序的幾種方法

    Pandas實(shí)現(xiàn)列(column)排序的幾種方法

    Pandas是一種高效的數(shù)據(jù)處理庫(kù),在數(shù)據(jù)處理過(guò)程中,咱們經(jīng)常需要將列按照一定的要求進(jìn)行排序,本文就來(lái)介紹一下Pandas實(shí)現(xiàn)列(column)排序的幾種方法,感興趣的可以了解一下
    2023-11-11
  • Python實(shí)現(xiàn)簡(jiǎn)單的文件傳輸與MySQL備份的腳本分享

    Python實(shí)現(xiàn)簡(jiǎn)單的文件傳輸與MySQL備份的腳本分享

    這篇文章主要介紹了Python實(shí)現(xiàn)簡(jiǎn)單的文件傳輸與MySQL備份的腳本分享,用到了socket與tarfile模塊,需要的朋友可以參考下
    2016-01-01
  • Python中緩存lru_cache的基本介紹和講解

    Python中緩存lru_cache的基本介紹和講解

    緩存是一種將定量數(shù)據(jù)加以保存以備迎合后續(xù)請(qǐng)求的處理方式,旨在加快數(shù)據(jù)的檢索速度,下面這篇文章主要給大家介紹了關(guān)于Python中緩存lru_cache的基本介紹和講解的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Python中join()函數(shù)多種操作代碼實(shí)例

    Python中join()函數(shù)多種操作代碼實(shí)例

    這篇文章主要介紹了Python中join()函數(shù)多種操作代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • pandas實(shí)現(xiàn)選取特定索引的行

    pandas實(shí)現(xiàn)選取特定索引的行

    下面小編就為大家分享一篇pandas實(shí)現(xiàn)選取特定索引的行,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 不歸路系列:Python入門(mén)之旅-一定要注意縮進(jìn)?。。。ㄍ扑])

    不歸路系列:Python入門(mén)之旅-一定要注意縮進(jìn)?。。。ㄍ扑])

    這篇文章主要介紹了Python入門(mén)一定要注意縮進(jìn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python實(shí)現(xiàn)的視頻播放器功能完整示例

    Python實(shí)現(xiàn)的視頻播放器功能完整示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的視頻播放器功能,結(jié)合完整實(shí)例形式分析了Python基于pyglet庫(kù)實(shí)現(xiàn)視頻播放功能的相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • 如何在python中用os模塊實(shí)現(xiàn)批量移動(dòng)文件

    如何在python中用os模塊實(shí)現(xiàn)批量移動(dòng)文件

    在工作中難免會(huì)遇到需要批量整理文件的情況,當(dāng)需要從一堆文件中將部分文件批量地轉(zhuǎn)移時(shí),如果手工一一轉(zhuǎn)移難免浪費(fèi)時(shí)間,這篇文章主要給大家介紹了關(guān)于如何在python中用os模塊實(shí)現(xiàn)批量移動(dòng)文件的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Python腳本文件外部傳遞參數(shù)的處理方法

    Python腳本文件外部傳遞參數(shù)的處理方法

    Python 自帶的接收外部參數(shù)的模塊,用好以后也是非常的猴賽雷。文章通過(guò)一個(gè)MySQL 自動(dòng)化部署腳本,需要指定的參數(shù)有三個(gè),我們均可以使用 --參數(shù)名 方式來(lái)指定,會(huì)非常方便,今天介紹的就是 Python 外部指定參數(shù)的幾種方法,感興趣的朋友一起看看吧
    2021-05-05
  • 淺談pytorch中的nn.Sequential(*net[3: 5])是啥意思

    淺談pytorch中的nn.Sequential(*net[3: 5])是啥意思

    這篇文章主要介紹了pytorch中的nn.Sequential(*net[3: 5])是啥意思,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論