這篇文章將為大家詳細(xì)講解有關(guān)django fernet fields字段加密的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

一、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)入并使用模型中包含的字段類(lèi):
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、字段類(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。
關(guān)于“django fernet fields字段加密的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站欄目:djangofernetfields字段加密的示例分析-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://chinadenli.net/article16/cohedg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、企業(yè)網(wǎng)站制作、網(wǎng)站改版、外貿(mào)網(wǎng)站建設(shè)、小程序開(kāi)發(fā)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
移動(dòng)網(wǎng)站建設(shè)知識(shí)