在 django 模型中加密 DateField?
Posted
技术标签:
【中文标题】在 django 模型中加密 DateField?【英文标题】:Encrypt DateField in django models? 【发布时间】:2012-02-05 23:23:33 【问题描述】:我有一个要求,我必须加密表中的某些字段。 我正在使用 Django 1.3.1 和 postgres 9.1。我指的是这个应用程序 django-fields :-
https://github.com/svetlyak40wt/django-fields/blob/master/src/django_fields/fields.py
这是我的代码:-
patient_type = EncryptedCharField(max_length=80, choices=CHOICES.PATIENT_TYPES)
date_of_birth = EncryptedDateField(null=True, blank=True)
gender = EncryptedCharField(max_length=1024, choices=CHOICES.GENDERS, blank=True)
contact_phone = EncryptedCharField(max_length=1024, blank=True)
security_question = models.ForeignKey(SecurityQuestion, null=True, blank=True)
security_answer = EncryptedCharField(max_length=1024, null=True, blank=True)
它将除 date_of_birth 之外的所有内容都以加密形式存储在数据库中。它会引发此错误
追溯: get_response 中的文件“/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py” 111. 响应 = 回调(请求,*callback_args,**callback_kwargs) _dec 中的文件“/home/user/slave/old_careprep/CPMS-Source/careprep/../careprep/utilities/decorators.py” 14. return view_func(request, *args, **kwargs) 设置中的文件“/home/user/slave/old_careprep/CPMS-Source/careprep/../careprep/visit/views.py” 202. 患者.save() 保存文件“/usr/local/lib/python2.7/dist-packages/django/db/models/base.py” 460. self.save_base(使用=使用,force_insert=force_insert,force_update=force_update) save_base 中的文件“/usr/local/lib/python2.7/dist-packages/django/db/models/base.py” 553. 结果 = manager._insert(值,return_id=update_pk,使用=使用) _insert 中的文件“/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py” 195. 返回插入查询(self.model,值,**kwargs) insert_query 中的文件“/usr/local/lib/python2.7/dist-packages/django/db/models/query.py” 1436. return query.get_compiler(using=using).execute_sql(return_id) execute_sql 中的文件“/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py” 791. cursor = super(SQLInsertCompiler, self).execute_sql(None) execute_sql 中的文件“/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py” 735. cursor.execute(sql,参数) 执行中的文件“/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py” 34. return self.cursor.execute(sql, params) 执行中的文件“/usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql_psycopg2/base.py” 44. return self.cursor.execute(query, args)
异常类型:DatabaseError at /visit/setup/ 异常值:日期类型的输入语法无效:“$AES$55403376ed906e119b0f7779554fbb51” 第 1 行:...L, NULL, '$AES$0452edae035cc33c4084e7b0fb39edd7', '$AES$5540... ^ 我们将不胜感激。
谢谢
【问题讨论】:
【参考方案1】:我意识到如果我将 DateField 转换为 CharField 然后应用 EncryptedCharField 它解决了我的问题
【讨论】:
以上是关于在 django 模型中加密 DateField?的主要内容,如果未能解决你的问题,请参考以下文章