gpt4 book ai didi

java - 使用 Fernet 在 Java 上进行对称加密

转载 作者:行者123 更新时间:2023-12-02 03:15:48 40 4
gpt4 key购买 nike

我想使用 Fernet 加密和解密 python 和 java 之间的消息模块。但我不明白他们举的例子。

反序列化现有 key :

final Key key = new Key("cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4=");

创建 token :

final Token token = Token.generate(random, key, "secret message");

反序列化现有 token :

final Token token = Token.fromString("gAAAAAAdwJ6wAAECAwQFBgcICQoLDA0ODy021cpGVWKZ_eEwCGM4BLLF_5CV9dOPmrhuVUPgJobwOz7JcbmrR64jVmpU4IwqDA==");

为什么需要随机参数来加密 secret 消息?我已经在 python 中实现了 fermet 加密,并且它从未要求任何随机源。

>>> from cryptography.fernet import Fernet
>>> key = Fernet.generate_key()
>>> f = Fernet(key)
>>> token = f.encrypt(b"my deep dark secret")
>>> token
b'...'
>>> f.decrypt(token)
b'my deep dark secret

如何获得与 python 中相同的加密标准,以便我可以使用相同的加密 key ?

最佳答案

使用相同的 key ,Python 和 Java 中的实现将完美兼容。但当然,两边都必须使用同一个。如果您使用 Python 代码作为基础,请执行 print(key) 并将相同的 key 复制到 Java 变体(它将是一个 urlsafebase64 字符串,因此不会出现传输问题)。在 Java 中,生成 token 时,使用 SecureRandom() 实例。它仅用于 IV,并且无论如何都是 token 的一部分,因此可用于任何语言的解密代码。 Fernet Python 自动使用良好的随机数(它是透明的,您不必选择它)。但是,无论您在生成 token 时在 Java 中选择何种随机数,都不会对解密代码产生任何影响,只需在两个实例中使用相同的 key 字符串即可。

关于java - 使用 Fernet 在 Java 上进行对称加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56962503/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com