- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在玩一个基于 python 后端的项目。我将使用 Django 来处理“核心”内容,并使用 FastAPI 来处理一些爬虫。我正在使用 Fernet
使用 Django 将一些数据加密到数据库中模块和自定义 Field
.
class EncryptedField(models.CharField):
description = "Save encrypted data to DB an read as string on application level."
def __init__(self, *args, **kwargs):
kwargs["max_length"] = 1000
super().__init__(*args, **kwargs)
@cached_property
def fernet(self) -> Fernet:
return Fernet(key=settings.FERNET_KEY)
def get_internal_type(self) -> str:
return "BinaryField"
def get_db_prep_save(
self, value: Any, connection: BaseDatabaseWrapper
) -> Union[memoryview, None]:
value = super().get_db_prep_save(value, connection)
if value is not None:
encrypted_value = self.fernet.encrypt(data=force_bytes(s=value))
return connection.Database.Binary(encrypted_value)
def from_db_value(self, value: bytes, *args) -> Union[str, None]:
if value is not None:
decrypted_value = self.fernet.decrypt(token=force_bytes(s=value))
return self.to_python(value=force_str(s=decrypted_value))
一切都按预期工作,问题是当我尝试解密 FastAPI 端的值时:
def decrypt(value: bytes):
return Fernet(FERNET_KEY).decrypt(token=value)
一些重要信息:
settings.FERNET_KEY == FERNET_KEY
,即,我在两侧使用相同的键。 from_db_value
-> value
-> b"gAAAAABhSm94ADjyQES3JL-EiEX4pH2odwJnJe2qsuGk_K685vseoVNN6kuoF9CRdf2GxiIViOgiKVcZMk5olg7FrJL2cmMFvg=="
user.encrypted_field
-> value
-> b"pbkdf2_sha256$260000$RzIJ5Vg3Yx8JTz4y5ZHttZ$0z9CuQiPCJrBZqc/5DvxiEcbNHZpu8hAZgmibAe7nrQ="
.我实际上进入了数据库并检查了这是存储在那里的值。 user
来自这里:from sqlmodel import Session, select
from .models import User
async def get_user(db: Session, username: str) -> str:
statement = select(User).where(User.username == username)
return db.exec(statement).first()
from_db_value
之前有什么东西那是以某种方式转换值(value)?!
最佳答案
解码值就足够了:
def decrypt(value: bytes):
return Fernet(FERNET_KEY).decrypt(token=value)
您确定要解密相同的数据吗?对我来说,这看起来像是一个加密的密码字段和其他一些字段。
mysql> select first_name, password from users_user where login='test'
+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+
| first_name | password |
| gAAAAABhSm94ADjyQES3JL-EiEX4pH2odwJnJe2qsuGk_K685vseoVNN6kuoF9CRdf2GxiIViOgiKVcZMk5olg7FrJL2cmMFvg== | pbkdf2_sha256$260000$RzIJ5Vg3Yx8JTz4y5ZHttZ$0z9CuQiPCJrBZqc/5DvxiEcbNHZpu8hAZgmibAe7nrQ= |
关于python - 如何解密最初使用 Fernet 加密的不同服务上的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69286403/
我有一个使用 Sinch SDK 和 CallKit 实现的 VOIP 应用程序。一切正常,除了设备插入耳机时。在后一种情况下,当通话开始时,音频仍通过设备的主扬声器路由。如果我在通话期间拔下并重
我需要将大量复杂(20 多个属性)对象过滤成多个子列表。要创建子列表,我有一个过滤器规范列表。要求是:a) 不允许一个项目成为两个子列表的一部分,并且 b) 必须能够在处理完成后获取所有未分割的项目。
我有一个简单的 .share-toggle 切换链接。当您点击它时,Facebook 评论插件应该会显示。它最初应该被 Conceal 问题是,如果我使用 css Conceal 它,然后单击切换按钮
我正在尝试制作一个功能类似于 android 市场的图库,您可以在其中滚动(左/右)以查看免费或付费应用程序等...还可以在布局中上下滚动。 到目前为止,我只是让它加载了两个布局,它们都有一个简单的“
大家好,我是网络开发的新手,最近刚刚完成我对网络设计的第一次尝试。我偶然发现了一个我找不到解决方案的问题。在 webkit-browsers 中,我的一个 ul-lists(导航)最初呈现在错误的位置
我遇到了这个问题。我在 ISP 上使用 Umbraco CMS 启动了一个 ASP.NET 网站。(这只是一个非常基本的信息网站。没什么特别的。) 但是,当我想要访问该网站时,第一个页面加载需要很长时
在我的 iPhone 应用程序中,我使用 UITabBarController 布置了三个选项卡。第一个选项卡(在应用启动时加载)使用本地数据加载,速度非常快。 虽然第二个选项卡从网络下载 XML 文
我有这样的风格: #cytoscape-container { width: 100%; height: 100%; margin: 0 aut
我在这里看到了几篇关于 SO 的帖子,但它们在功能和结构上过于具体,而我正在寻找的是我或任何人都可以在任何地方使用的更通用的东西。 我只需要有一个按钮,单击该按钮可以在 3 类之间循环。但如果出现必须
我在 http://www.raven.dima.neoturbine.net/ 有一个网页我正在努力。顶部导航在 IE 8、Firefox 3.6 和适用于 Android 的 Dolphin 浏览
我想将主机的用户/组与 docker 机器同步,以使(开发人员)能够编辑容器内部或外部的文件。有一些这样的想法:Handling Permissions with Docker Volumes这会创建
向通知列表/栏发布推送通知时,.contentText 和 .number 最初不显示(.ticker、.icon 和 .contentTitle 显示正常)。但是,在发布另一个通知(具有不同的 ID
我实现了以下 MKMapView 方法,该方法在添加注释后运行。我在 Interface Builder 中将我的 MKMapView map (parishMap) 设置为“显示用户位置”,并且在加
我是一名优秀的程序员,十分优秀!