Django가 데이터베이스에 저장하기 전에 PASSWORD 필드를 암호화하는 방법처럼 auth.User 모델의 first_name, last_name, email_id와 같은 모든/atleast 필드를 암호화 할 수있는 방법이 있습니까? Django 사용자 모델 필드 암호화
내 해결 방법 : I에 유래에 & 몇 가지 질문이있는에 따라이 규정에 의해, 우리 자신의 참고 MyUser 모델 우리가 원하는 방식으로 정의 & 기본 BaseUser 모델을 상속 할 수있을 것입니다 문서를 겪었
&을 암호화하는 사용자 지정 문자 필드는 문자의 암호를 해독합니다.
내 응용 프로그램에 문제가있어, 문자 인 필드에 쉽게 액세스 할 수있는 검색 옵션을 제공했습니다. 그런 Char Fields를 모두 암호화하면 검색 옵션을 쿼리하는 것이 어렵습니다.
예 : ABCD, ABCDE, ABC가 데이터베이스에있는 문자열 인 경우 & BC가있는 모든 항목을 알고 싶다면 아무 결과도 나오지 않습니다. 이유는 각각 ABCD, ABCDE, ABC는 다른/고유 한 문자열로 암호화합니다 (PyCrypto에서 제공하는 AES 암호화를 사용하고 있습니다). 또한 BC는 ABCD, ABCDE, ABC 사이의 유사성이없는 고유 한 문자열로 암호화됩니다 (명백한 이유는 키 길이가 32 인 AES 알고리즘을 사용하고 있기 때문입니다). 그리고 제가 작성한 쿼리는
MyModel.objects.filter(first_name__icontains='BC')
중 하나를 반환하지 않습니다. (예, 대소 문자를 구별하지 않아야합니다.)
[참고 : 사용자 지정 필드에서 "to_python", "get_db_prep_value"와 같은 모든 필수 메서드를 추가했으며 lookup 메서드도 시도했습니다. 하지만 실제로 문제는 각 문자열이 동일한 길이의 AES에서 고유 한 문자로 암호화 됨]
Django를 처음 사용하기 때문에 Django 개발자처럼 느껴지지 않을 수도 있습니다. 위의 두 가지 질문 중 하나에 대한 대답을 알고 싶습니다. 내가 대답을 얻지 않으면 나는 교착 상태에 빠져있다. 미리 감사드립니다, 그러나 내게 친절하시기 바랍니다 & 답변.
이와 비슷한? https://github.com/defrex/django-encrypted-fields –
@Bibhas 그렇습니다. Keyczar도 내가 암호화 할 수있는 방법 중 하나입니다. 나는 PyCrypto의 AES 구현을 사용하고있다. (나는 머리를 꺾고 코드를 변경할 준비가되어있다.) 질문에서 설명했듯이 텍스트를 쿼리 할 수 있습니까? – Arun
은 설명서에 설명되어 있지 않습니다. 시도해 볼 수 있습니다. 그냥 하나의 필드를 구현하고 테스트하십시오. –