首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Fernet在java上进行对称加密

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

Stack Overflow用户
提问于 2019-07-10 10:04:34
回答 1查看 1.8K关注 0票数 1

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

反序列化现有的键:

代码语言:javascript
复制
final Key key = new Key("cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4=");

创建令牌:

代码语言:javascript
复制
final Token token = Token.generate(random, key, "secret message");

反序列化现有令牌:

代码语言:javascript
复制
final Token token = Token.fromString("gAAAAAAdwJ6wAAECAwQFBgcICQoLDA0ODy021cpGVWKZ_eEwCGM4BLLF_5CV9dOPmrhuVUPgJobwOz7JcbmrR64jVmpU4IwqDA==");

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

代码语言:javascript
复制
>>> 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相同的加密标准,以便可以使用相同的加密密钥?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-11 05:57:03

使用相同的密钥,Python和Java中的实现将完全兼容。当然,在这两种情况下,你必须使用相同的方法。如果您使用Python代码作为基础,那么执行一个print(key)并将相同的密钥复制到Java变体(它将是一个urlsafebase64字符串,所以没有传输问题)。在Java语言中,当生成令牌时,使用SecureRandom()实例。它只用于IV,而且这是令牌的一部分,所以无论是哪种语言的解密代码都可以使用。Fernet Python自动使用良好的随机性(它是透明的,你不必选择它)。但是,无论您在生成令牌时在Java中选择什么随机选项,都不会对解密代码产生任何影响,只需在两个实例中使用相同的密钥字符串即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56962503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档