import secrets
import base64
import hashlib
import binascii
import uuid
# 生成16字节的盐值
def generate_salt():
return secrets.token_bytes(16)
# 对密码进行哈希处理,返回加密后的密文
def hash_password(password_str, salt_byte):
dk = hashlib.pbkdf2_hmac("sha256", password_str.encode("utf-8"), salt_byte, 10000)
return binascii.hexlify(dk)
# 对结果进行base64编码
def encode_base64(data):
return base64.b64encode(data).decode()
# 密码加密和存储的主过程
def encrypt_password(new_password):
# 生成盐值
salt = generate_salt()
# 密码哈希加密
password_hashed = hash_password(new_password, salt)
# 编码密码和盐值为base64格式
base64_password_hashed = encode_base64(password_hashed)
base64_salt = encode_base64(salt)
return base64_password_hashed, base64_salt
# 模拟账户类
class Account:
def __init__(self, password, salt):
self.password = password
self.password_salt = salt
# 测试用例,设置密码
new_password = "Dasiwoba1" # 这里替换为你的密码
# 获取加密后的密码和盐值
encrypted_password, encrypted_salt = encrypt_password(new_password)
# 创建账户对象,并存储加密信息
account = Account(encrypted_password, encrypted_salt)
# 输出加密结果
print(uuid.uuid4())
print("Encrypted Password (Base64):", account.password)
print("Salt (Base64):", account.password_salt)
然后在数据库upload_file中去修改文件为需要读取的文件
原文始发于微信公众号(e0m安全屋):关于一次dify的渗透
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论