gpt4 book ai didi

javascript - 在 ruby​​ 中使用 sjcl.js 创建的 AES 解密

转载 作者:数据小太阳 更新时间:2023-10-29 05:02:49 25 4
gpt4 key购买 nike

您好,让我们假设客户端有一个 key ,该 key 不是通过与加密数据相同的 channel 传输的。

我想要完成的是解密 Stanford Javascript Crypto Library (sjcl) 的结果在 ruby 中。或具有支持 AES 的加密库的任何其他语言的概括。

这是我在 javascript 中所做的:

sjcl.encrypt('stack-password', 'overflow-secret')

这就是我得到的返回:

{
"iv": "Tbn0mZxQcroWnq4g/Pm+Gg",
"v": 1,
"iter": 1000,
"ks": 128,
"ts": 64,
"mode": "ccm",
"adata": "",
"cipher": "aes",
"salt": "pMQh7m9Scds",
"ct": "H6JRpgSdEzKUw2qEO1+HwIzAdxGTgh0"
}

所以我真正想问的是,我需要这些参数中的哪些(假设服务器已经有“堆栈密码” key )来解密服务器端的 secret ,我应该使用哪个库?可能是 AES 解密库还不够?

最佳答案

以下不能提前协商(或硬编码)。

  • ct:密文你的加密数据,显然
  • iv:初始化向量,应该是唯一的,并且不能与AES-CCM 的相同 key 重复使用
  • salt:随机,用于根据密码创建 key Pbkdf2
  • adata:额外的认证数据,是你想要包含的纯文本数据,但在使用 AES-CCM 时确保它没有被篡改。 .如果您永远不打算包含任何数据,那么您可以忽略它(您必须在 sjcl 中使用明文传递它)。

以下您可以提前协商(或硬编码),实际上您不应该在传输时将这些值插入服务器加密 api 未经身份验证 并期望安全。 adata 对于 viterks 来说是个不错的地方,如果你想让它可变的话基于客户端

  • iter:Pbkdf2 的迭代,这只需要足够高以减慢您的密码的暴力破解需要在未来随着硬件的速度而改变。
  • ks:keysize 知道用 Pbkdf2 生成什么大小的 key , future 需要随着安全量的变化
  • ts:tagsize 以了解您的密文中身份验证标签的大小
  • cipher:如果您只支持 AES,那么您可以假设。
  • mode:如果您只支持 AES-CCM超出您的想象。
  • v:如果您将来只支持一个版本的 sjcl,那么您只能假设。

使用 OpenSSL library 的 ruby 似乎只要您的 OpenSSL 支持 AES-128-CCM puts OpenSSL::Cipher.ciphers 进行检查,它就可以工作。它确实支持 generating keys using pbkdf2 ,但您确实需要使用 Sha256 摘要才能与 sjcl 兼容,这又取决于您的 openssl 版本。

关于javascript - 在 ruby​​ 中使用 sjcl.js 创建的 AES 解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13563859/

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