手机网站制作机构,网站关键词优化教程,网站分析的数据来源有哪些,wordpress悬浮音乐播放器需求#xff1a; 1 #xff1a;员工在填写用户的手机号时#xff0c;直接填写#xff0c;在django后台中输入 2#xff1a;当员工在后台确认要存储到数据库时#xff0c;后台将会把手机号进行加密存储#xff0c;当数据库被黑之后#xff0c;手机号字段为加密字符 3 1 员工在填写用户的手机号时直接填写在django后台中输入 2当员工在后台确认要存储到数据库时后台将会把手机号进行加密存储当数据库被黑之后手机号字段为加密字符 3员工在后台中进行查看客户手机号时需要正常显示非加密状态 4直接把公钥和私钥存放到代码里面不要额外读取存储公钥私钥
models.py文件中代码如下
# -------------------------------------------------------------------------------------
# 手机号加密插件
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.primitives.asymmetric import padding
import base64# -------------------------------------------------------------------------------------
class Order(models.Model):id models.BigAutoField(primary_keyTrue, uniqueTrue, verbose_name订单id, )shoujihao models.TextField(verbose_name客户手机号码, max_length30000, blankTrue)# -------------------------------------------------------------------------------------# 手机号解密def get_shoujihao(self):# 1获取到数据库中的字符串 a# 2把字符串转换成字节类型 b# 3对字节b进行解密为 c# 4:返回cif len(self.shoujihao)20:shoujihao1self.shoujihaoshoujihao1 base64.b64decode(shoujihao1)# 读取私钥文件private_key-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAp4vQEgBPcCy09xmJDVFxjuYkUSqBNgUxIHF4E9Vot1rDWU
ncFSIERsEqTq9wIlVsgiVtRJ/0FxHLIgZPlFvRRUh0JjxkpddYAKEKK2gySoiE8
kUwomeYpILg/pAxtSoRBbUqtE/sTQZM2sOM07FYrz/Q8oVBN1Au3/LwOOAFf6R/5
lFBJCutS/wAuvydwxlTjuNp4PF4Tc65qaF35VE0IvcOByahAPRqI4TqFb/UOidJ
1Xc4HPIwmtkeYYRyqDgZun2tdQ0iQm7A7lN9TkP6qoKbTRI9ySoBHs4SJXy8r63r
xPRgkjEsVR/hcsZAt7LHjNnZKWd8b1yi0AO56QIDAQABAoIBABya/xUXtvheta3r
ju32bgY5Dm59le6aSt9rDbOUuPFAYL7qepOP5yROgdr3075b5ETveMnvxOE45BD
7Ep5EbpQzobCY8EO4MqHKDhPOiA03dMvDAV9pH/0HyjNCVo1r8OehI0Gf1LlHPR
c9i7DgXcx4GrgCFg6g0sP7GR8IxWKkT1rHNWWjqaWh3HlBbJhdrZpxjKbCqTjKM
ImrgPKDi1An0NNHJyQe42XNgmOAMoCRUvP8skLveyYDQ2LCeTjnmOD0WTMlwlt3
ulu4MjKh/wMAj7dxguonK97C01n0utPk0KdkOPrBNazEF2roY2FrcYrn1MgTs
QDECG1JVtYVP1Tuyb3pgoQKBgC9SV/Ft1K4T8e/AiTrF07SCn8BEZOZ0BDI69lB
cYh1CPXBt1M0aTM1mwCVWxYrapfVismesnIiVQOn2AehdDyvE1krkHRTQCUYD
PkM7efPek9WBWHy6dbEPJmMDs1P5mVOV7MJEGQMtE01BO/KoQ74fePrbaFDwHkU
nzuBAoGBAJIpUUmDMnkMzr5HPw1rtZEjkR0kEQXU3jeaKA1TjqRoli1ApUpBB11
ekDfPc/BqzRSIkACEijwdnf7NhQveCAiEaj5NiGkwS/zjX9S96v0qK5SFil6yc
EXv1GMN54aCmiHWBGq86tOKjV9M4hnlVpuRJPeHi52nAyHpJfmB7
-----END RSA PRIVATE KEY-----key serialization.load_pem_private_key(private_key.encode(), passwordNone, backenddefault_backend())decrypted_data key.decrypt(shoujihao1, padding.OAEP(mgfpadding.MGF1(algorithmhashes.SHA256()),algorithmhashes.SHA256(), labelNone))# decrypted_data 的类型为字节decrypted_datadecrypted_data.decode(utf-8)# decrypted_data.decode()之后的类型为字符串shoujihao1decrypted_dataprint(类型)print(type(decrypted_data))print(decrypted_data)# 打印解密后的消息color_code greenreturn format_html(span stylecolor:{};{}/span, color_code, shoujihao1)else:color_code greenreturn format_html(span stylecolor:{};-/span, color_code, )get_shoujihao.short_description 手机号admin.py文件中代码如下 # -------------------------------------------------------------------------------------
# 手机号加密插件
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.primitives.asymmetric import padding
import base64# -------------------------------------------------------------------------------------
# -------------------------------------------------------------------------------------
class Order_salesmanAdmin(admin.ModelAdmin):# -------------------------------------------------------------------------------------# 手机号加密显示 和手机号显示# 设置录入后台中展示的数据字段list_display [id,shoujihao, get_shoujihao,]def save_model(self, request, obj, form, change):if not obj.pk:obj.userid UserProfile.objects.get(userrequest.user)# 客户手机号加密存储shoujihao1 obj.shoujihaoif len(shoujihao1) 11:# 1:在admin后台中允许用户输入的是字符串类型的数据# 2:加密之后得到的是字节类型# 3:把字节类型的编码为utf-8的字符串类型 存储在数据库中# 读取公钥文件public_key -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp4vQEgBPcCy09xmJDVFx
juYkUSqBNgUxIHF4E9Vot1rDWUncFSIERsEqTq9wIlVsgiVtRJ/0FxHLIgZPlF
TkP6qoKbTRI9ySoBHs4SJXy8r63rxPRgkjEsVR/hcsZAt7LHjNnZKWd8b1yi0AO5
6QIDAQAB
-----END PUBLIC KEY-----key serialization.load_pem_public_key(public_key.encode(), backenddefault_backend())encrypted_data key.encrypt(shoujihao1.encode(),padding.OAEP(mgfpadding.MGF1(algorithmhashes.SHA256()),algorithmhashes.SHA256(), labelNone))# 加密后的数据类型 encrypted_data class bytes 字节类型encrypted_database64.b64encode(encrypted_data).decode(utf-8)# decode为utf-8之后的数据类型 为字符串类型这样才可以在字符字段中存储# print(decode之后的数据类型)# print(type(encrypted_data))# print(encrypted_data)obj.shoujihao encrypted_data# -------------------------------------------------------------------------------------if not change:obj.userid UserProfile.objects.get(userrequest.user)else:obj.updated_userid UserProfile.objects.get(userrequest.user)obj.save()super().save_model(request, obj, form, change)# -------------------------------------------------------------------------------------