最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ì)稱加密,使用 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)入并使用模型中包含的字段類:

from django.db import models
from rbac.models import *
from fernet_fields import EncryptedCharField
class Customer(models.Model):
  """ 客戶(學(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、字段類型

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

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

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 的任何類型的查找。除了為空之外,都將拋出django.core.exceptions.FieldError。

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

相關(guān)文章

  • Python中xml和dict格式轉(zhuǎn)換的示例代碼

    Python中xml和dict格式轉(zhuǎn)換的示例代碼

    最近在做APP的接口,遇到XML格式的請(qǐng)求數(shù)據(jù),費(fèi)了很大勁來(lái)解決,下面小編給大家分享下Python中xml和dict格式轉(zhuǎn)換問(wèn)題,感興趣的朋友跟隨小編一起看看吧
    2019-11-11
  • Django異步任務(wù)線程池實(shí)現(xiàn)原理

    Django異步任務(wù)線程池實(shí)現(xiàn)原理

    這篇文章主要介紹了Django異步任務(wù)線程池實(shí)現(xiàn)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Matplotlib繪圖基礎(chǔ)之配置參數(shù)詳解

    Matplotlib繪圖基礎(chǔ)之配置參數(shù)詳解

    Matplotlib?提供了大量配置參數(shù),這些參數(shù)可以但不限于讓我們從整體上調(diào)整通過(guò)?Matplotlib?繪制的圖形樣式,下面我們就來(lái)看看如何巧妙的運(yùn)用這些參數(shù)吧
    2023-08-08
  • Python圖像處理之圖像金字塔的向上和向下取樣

    Python圖像處理之圖像金字塔的向上和向下取樣

    圖像金字塔是指由一組圖像且不同分別率的子圖集合,它是圖像多尺度表達(dá)的一種,以多分辨率來(lái)解釋圖像的結(jié)構(gòu),主要用于圖像的分割或壓縮。本文主要介紹了圖像金字塔的圖像向下取樣和向上取樣,感興趣的可以了解一下
    2022-09-09
  • Python學(xué)習(xí)筆記之Python的下載、腳本與交互模式、注釋

    Python學(xué)習(xí)筆記之Python的下載、腳本與交互模式、注釋

    這篇文章主要介紹了Python學(xué)習(xí)筆記之Python的下載、腳本與交互模式、注釋,本文從基礎(chǔ)開始學(xué)習(xí)Python,需要的朋友可以參考下
    2023-03-03
  • Python實(shí)現(xiàn)希爾伯特變換(Hilbert transform)的示例代碼

    Python實(shí)現(xiàn)希爾伯特變換(Hilbert transform)的示例代碼

    希爾伯特變換(Hilbert transform)是一個(gè)對(duì)函數(shù)產(chǎn)生定義域相同的函數(shù)的線性算子,而且希爾伯特變換在信號(hào)處理中很重要,所以本文和大家分享了Python實(shí)現(xiàn)希爾伯特變換的代碼,需要的可以參考一下
    2023-04-04
  • python實(shí)現(xiàn)模擬數(shù)字的魔術(shù)游戲

    python實(shí)現(xiàn)模擬數(shù)字的魔術(shù)游戲

    這篇文章介紹了python實(shí)現(xiàn)模擬數(shù)字的魔術(shù)游戲,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-12-12
  • Python?庫(kù)?PySimpleGUI?制作自動(dòng)化辦公小軟件的方法

    Python?庫(kù)?PySimpleGUI?制作自動(dòng)化辦公小軟件的方法

    Python?在運(yùn)維和辦公自動(dòng)化中扮演著重要的角色,PySimpleGUI?是一款很棒的自動(dòng)化輔助模塊,讓你更輕松的實(shí)現(xiàn)日常任務(wù)的自動(dòng)化,下面通過(guò)本文給大家介紹下Python?庫(kù)?PySimpleGUI?制作自動(dòng)化辦公小軟件的過(guò)程,一起看看吧
    2021-12-12
  • Python self參數(shù)詳細(xì)介紹

    Python self參數(shù)詳細(xì)介紹

    事實(shí)上,Python只是規(guī)定,無(wú)論是構(gòu)造方法還是實(shí)例方法,最少要包含一個(gè)參數(shù),并沒(méi)有規(guī)定該參數(shù)的具體名稱。之所以將其命名為self,只是程序員之間約定俗成的一種習(xí)慣,遵守這個(gè)約定,可以使我們編寫的代碼具有更好的可讀性
    2023-01-01
  • 使用Python實(shí)現(xiàn)博客上進(jìn)行自動(dòng)翻頁(yè)

    使用Python實(shí)現(xiàn)博客上進(jìn)行自動(dòng)翻頁(yè)

    這篇文章主要介紹了使用Python實(shí)現(xiàn)博客上進(jìn)行自動(dòng)翻頁(yè),需要的朋友可以參考下
    2017-08-08

最新評(píng)論

金寨县| 丹巴县| 漳浦县| 平泉县| 凤山市| 汤阴县| 民县| 宜昌市| 民乐县| 长沙市| 喀喇沁旗| 瓮安县| 临沭县| 赤水市| 垣曲县| 依兰县| 开远市| 南靖县| 星子县| 河东区| 漾濞| 屏东县| 乌审旗| 清原| 黄大仙区| 江永县| 永德县| 伊宁县| 石屏县| 炉霍县| 肃宁县| 两当县| 商城县| 大兴区| 贺州市| 凤山市| 黄浦区| 河池市| 恭城| 吴桥县| 梅河口市|