在Django中使用第三方库进行加密和哈希

2023-04-11 00:00:00 django 第三方 加密

Django中使用第三方库进行加密和哈希涉及到以下两种情况:

  1. 加密用户密码

Django自带了密码哈希函数,可以将用户的密码进行哈希加密,但如果需要更强的加密算法,可以使用第三方库bcrypt或Argon2。

使用bcrypt:

pip install bcrypt

在Django的settings.py文件中添加:

PASSWORD_HASHERS = [
    'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
    'django.contrib.auth.hashers.BCryptPasswordHasher',
    'django.contrib.auth.hashers.PBKDF2PasswordHasher',
    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
]

然后在进行密码哈希时,使用bcrypt库:

import bcrypt

password = "pidancode.com"
salt = bcrypt.gensalt()
hashed_password = bcrypt.hashpw(password.encode('utf-8'), salt)

使用Argon2:

pip install argon2-cffi

在Django的settings.py文件中添加:

INSTALLED_APPS = [
    ...
    'django.contrib.auth.hashers.Argon2PasswordHasher',
]

PASSWORD_HASHERS = [
    'django.contrib.auth.hashers.Argon2PasswordHasher',
    'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
    'django.contrib.auth.hashers.BCryptPasswordHasher',
    'django.contrib.auth.hashers.PBKDF2PasswordHasher',
    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
]

然后在进行密码哈希时,使用argon2库:

from argon2 import PasswordHasher

password = "pidancode.com"
hasher = PasswordHasher()

hashed_password = hasher.hash(password)
  1. 加密敏感数据

Django提供了加密和解密函数,可以用来加密敏感数据,如API密钥等,但如果需要更强的加密算法,可以使用第三方库cryptography。

使用cryptography:

pip install cryptography

生成密钥:

from cryptography.fernet import Fernet

key = Fernet.generate_key()

加密和解密数据:

message = "皮蛋编程"

# 加密数据
cipher_suite = Fernet(key)
cipher_text = cipher_suite.encrypt(message.encode('utf-8'))

# 解密数据
plain_text = cipher_suite.decrypt(cipher_text).decode('utf-8')

相关文章