关于 NaCL 加密库的问题

2024-03-14

我正在寻找实现加密系统的库,并对使用 NaCl:网络和密码学库特别感兴趣盒子功能 http://nacl.cr.yp.to/box.html。显然,它使用对称加密 XSalsa20、用于公私加密的 Curve25519 和用于身份验证的 Poly1305 作为其原语。

然而,该文档在它们的使用方式方面似乎还不够。例如,它提到为了计算密钥,它使用发送者的私钥和接收者的公钥来计算秘密密钥。但它没有解释如何。有人能解释一下吗?

如果我使用相同的公钥和私钥,我将不会在下次尝试时生成相同的密钥,这将是灾难性的。有谁知道其背后的解释,或者为我提供一些有关函数如何工作而不是如何使用函数的更多文档?


如何crypto_box work?

box在两个密钥上使用 Diffie-Hellman 密钥交换并对结果进行哈希处理。然后它使用它作为密钥secret_box.

  • crypto_box相当于crypto_box_beforenm其次是crypto_box_afternm.

  • crypto_box_beforenm是哈希密钥交换,其工作原理如 Curve25519 论文中所述,在 Curve25519 上使用椭圆曲线 Diffie-Hellman 密钥交换,并使用 HSalsa 哈希结果。这会产生一个 32 字节的共享密钥。

    k = 哈希(Curve25519(b, A)) = 哈希(Curve25519(a, B))

  • crypto_box_afternmcrypto_secret_box。它需要一个 24 字节的随机数和一个 32 字节的密钥。它是一种经过身份验证的流密码,使用 XSalsa20 进行加密,使用 Poly1305 作为 MAC。 XSalsa20输出的前32个字节用于MAC,其余的是xor编入明文以对其进行加密。

如果多次使用会发生什么?

如果您采用两个固定密钥对,则密钥交换的结果将始终相同。

但对称部分secret_box即使您多次使用某个密钥,只要您从不重复使用该密钥的随机数,即(密钥,随机数)对必须是唯一的,它也是安全的。

对于所有现代经过身份验证的流密码(例如 AES-GCM 或 XSalsa20-Poly1305),此属性几乎相同。

创建唯一随机数的常见方法是:

  • 使用 8 字节前缀和随机 16 字节值(无状态,随机 16 字节很可能是唯一的)
  • 使用 16 字节前缀和 8 字节计数器(有状态,在为每个数据包递增的连接中有用)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于 NaCL 加密库的问题 的相关文章

  • Xcode 6.4 Swift 单元测试无法编译:“GPUImage.h 未找到”“无法导入桥接标头”

    我的 Xcode 项目构建并运行良好 它有 Swift 和 Objective C 代码 它已安装 GPUImage 我向它添加了单元测试 现在它将不再编译 找不到 GPUImage h 文件 导入桥接标头失败 以下是我发现并尝试过的解决方
  • 跨延迟加载路由创建共享模块

    我正在构建一个 Angular 11 应用程序并尝试创建一个SharedModule 我正在使用延迟加载 并希望避免在延迟加载的路由中多次加载公共模块 我创建了一个共享模块并将其导入到我的AppModule 根据我的理解 这个共享模块应该在
  • 按列分组的数据帧上 R 中的行之间的差异

    我希望通过 app name 获得不同版本的计数差异 我的数据集如下所示 app name version id count difference 这是数据集 data structure list app name structure c
  • 每次在我的 AWS SQS 目标上推送通知时如何触发事件?

    我正在将 AWS SQS 用于 Amazon MWS 订单 API 每当有人从已将我添加为其开发人员的卖家帐户订购时 亚马逊都会将通知发送到我的 AWS SQS 应用程序 我可以从那里提取通知 但为此 我必须创建一个调度程序来提取通知 我是
  • 使用 AWS MSK 连接器连接到 AWS VPC 内的 MongoDB atlas

    我正在尝试使用MongoDB使用更改流Kafka 我选择 AWS MSK 是因为我的整个基础设施都位于 AWS 内 并且可以轻松与其他 AWS 服务集成 I created an AWS MSK cluster within the VPC
  • 在 WPF 树视图中获取 FullPath?

    如果我以编程方式创建 WPF TreeView 例如 TreeView treeView lt added in the designer TreeViewItem rootNode new TreeViewItem rootNode He
  • d3.js 更新视觉效果

    我有一个与 d3 js 放在一起的树形图 我通过 getJSON 填充数据 效果很好 但是 我在 setInterval 方法中具有此功能 并且它似乎并没有刷新自身 var treemap d3 layout treemap padding
  • 安装 APK 时出现会话“应用程序”错误

    我在将 Android Studio 1 1 编写的项目导入 Android Studio 2 1 2 时遇到困难 每当在平板电脑上测试应用程序之前构建 gradle 时 我都会收到此错误 下面是错误的屏幕截图 有谁知道是什么问题 我尝试过
  • 为什么我们不能在函数式接口中重载抽象方法? (爪哇)

    所以我熟悉java中的函数式接口 以及它们与lambda表达式的使用 一个函数式接口只能包含一个抽象方法 当从 lambda 表达式使用这一孤独方法时 您不需要指定其名称 因为接口中只有一个抽象方法 编译器知道这就是您正在引用的方法 Exa
  • 当 Vuejs 中的 props 值发生变化时,DOM 不会更新

    我有父母和孩子 在父级中 我将 3 个变量作为 props 传递给子级 在孩子中我正在使用watch 寻找变量的变化 当孩子第一次被创建时watch按预期工作 但是当更新 props 中的数据时 子级的 DOM 不会更新 正在寻找变量数据变
  • 使用 wmi 获取活动会话(Win32_LogonSession 还返回非活动/旧会话)

    有没有办法只显示 wmi 的活动会话 问题是 Win32 LogonSession 还显示不活动 断开连接的会话 ManagementScope scope new ManagementScope ManagementPath Defaul
  • 从基元创建自定义形状

    我正在尝试通过组合原始形状来创建自定义物理形状 目标是创建一个圆形立方体 合适的方法似乎是初始化 形状 变换 我在这里找到的https developer apple com library prerelease ios documenta
  • 重定向到破折号中的 url

    我正在使用 dash 构建一个仪表板 每当单击特定数据点时 我都会创建一个唯一的 url 如何将用户重定向到此创建的 url 我正在使用下面给出的代码 每当有人单击任何数据点时 单击事件就会触发并执行回调函数 app layout html
  • RetentionPolicy CLASS 与 RUNTIME

    两者之间有什么实际区别RetentionPolicy CLASS and RetentionPolicy RUNTIME 看起来两者都被记录到字节码中 并且无论如何都可以在运行时访问 无论如何 两者都可以在运行时访问 那不是那个javado
  • CSS - 为什么我无法设置 元素的高度和宽度?

    我正在尝试使用以下 html 标记创建 css 按钮 a href access php class css button red Forgot password a 但它最终不会比中间的文本大 即使我已经设置了班级的高度和宽度 顺便说一句
  • 如何将 c_uint 的 ctypes 数组转换为 numpy 数组

    我有以下 ctypes 数组 data ctypes c uint 100 我想创建一个 numpy 数组np data包含来自 ctypes 数组数据的整数值 ctypes 数组显然稍后会填充值 我看到numpy中有一个ctypes接口
  • 如何使用 Spark 2 屏蔽列?

    我有一些表 我需要屏蔽其中的一些列 要屏蔽的列因表而异 我正在读取这些列application conf file 例如 对于员工表如下所示 id name age address 1 abcd 21 India 2 qazx 42 Ger
  • 如何通过API集成keycloak短信验证?

    我有一个 keycloak 服务器和使用自定义 KeycloakProvider 的 Laravel 应用程序 public function loginByEmail string email string password SsoTok
  • 你将如何开始自动化我的工作? - 第2部分

    后续这个问题 https stackoverflow com questions 2796128 how would you start automating my job 在经历了第一波进货 9 小时的复制 粘贴 后 我现在相信我已经满足
  • 为什么 DbSet 不是协变的?

    我有一个工厂函数来返回DbSet Of IItemType 实际的返回类型始终是一个实现IItemType 例如DbSet Of CategoryType 我认为泛型支持协方差 并且此方法可以正常工作 但是当我尝试运行代码时出现异常 无法转

随机推荐

  • 在lisp中,如何使用floor函数返回的第二个值?

    当我这样做时 4楼3 我得到了 1 1 3 但我该如何使用这 1 3 呢 例如 您可以使用将其绑定到变量multiple value bind multiple value bind quot rem floor 4 3 format t
  • 移动 Safari 与主屏幕 Web 应用程序

    我正在为 iOS 开发一个 web 应用程序 我注意到在移动 safari 上运行和从主屏幕运行之间存在一些奇怪的事情 是否有任何资源可以提供在模式之间切换的通用接口 如果没有 是否有任何资源详细说明这两种模式之间的所有差异和陷阱 我遇到过
  • 将数据从节点传递到jade?

    问题是我渲染视图并发送一些数据 console log products shows an array res render seller sell shop id req user shop id products products 我将
  • Spring Data Rest - 如何从页面中删除元素?

    我的项目中有以下 REST 控制器方法 RequestMapping method GET value applications produces MediaType APPLICATION JSON VALUE public Respon
  • GitHub Probot:错误 probot:签名与事件负载和秘密不匹配

    我正在尝试使用构建 GitHub 应用程序机器人框架 https probot github io 这是文件的内容index js module exports robot gt robot log Yay the app was load
  • docker-compose restart 连接池已满

    我和我的团队正在使用 docker compose 将我们的一些基础设施转换为 docker 一切似乎都工作得很好 我遇到的唯一问题是重新启动它给我一个连接池已满错误 我正在尝试找出造成这种情况的原因 如果我删除 2 个容器或 1 个完整设
  • 如何强制 Ruby 尊重 Net::HTTP 标头中的下划线

    我如何强制 Ruby 尊重 a 中的下划线Net HTTP header uri URI parse url headers api key my private key request Net HTTP Post new uri head
  • 删除node.js中的几个文件

    删除node js中的多个文件的最佳方法是什么 function deleteFiles files callback var files file1 js file2 jpg file3 css deleteFiles files cal
  • 如何在 M1 mac 上安装自制软件

    我刚买了一台新 Mac M1 Macbook pro 我正在尝试安装自制程序 但每次我完成安装时 它都会告诉我它没有写入路径 然后当我尝试建议的任何内容添加到路径 什么也没有发生 终端或其他任何东西根本无法识别该命令 就好像它没有安装一样
  • 在 VBE 中无法查看 Excel 工作表

    我正在使用其他人创建的 Excel 文件 一张包含宏的工作表似乎受密码保护 但我不明白的是我无法在工作表列表下的 VBE 中看到它 工作表选项卡在 Excel 中可见 但我看不到内容 有没有办法在VBE中取消隐藏它 一张包含宏的工作表 这是
  • Rails:Watir 中的代理身份验证(Chrome 驱动程序)

    我尝试添加代理身份验证chrome在 watir 上运行的 webdriver 如下所示 require watir proxies proxy server 185 264 167 184 63109 proxy auth usernam
  • 难以从 iPhone X 上的 2D 区域获取面部标志点的深度(SceneKit/ARKit 应用程序)

    我正在使用 iPhone X 上的前置摄像头运行面部标志检测 并且正在努力获取面部标志的 3D 点 VNFaceLandmarkRegion2D 仅提供图像坐标 X Y 我一直在尝试使用ARSCNView hitTest or ARFram
  • jQuery 如何返回一个数组并且仍然是一个 jQuery 对象?

    我试图重现 jQuery 1 7 1 的对象结构 以更好地理解它是如何工作的 我有以下代码 function window undefined var document window document navigator window na
  • PDF 到 Excel 转换将每个 pdf 页面放在不同的工作表中

    我正在尝试将 pdf 文件 有 16 页 转换为 Excel 文件 以便运行我在 Excel 中已有的程序 我已经有一个将 pdf 转换为 excel 的代码 但我希望宏将 pdf 文件的每个单独页面放入我的 excel 文件中的不同工作表
  • 伪造 WPF 操作事件

    我想使用鼠标 键盘伪造操纵 或触摸 事件 当我尝试使用以下方式引发事件时 RoutedEventArgs e new RoutedEventArgs ManipulationStartedEvent this RaiseEvent e 给我
  • CodeLearn Twitter 教程 TweetAdapter.java 上出现空指针错误

    我目前正在学习 Codelearn Twitter 教程 但我在下面的代码中收到一个空指针 有人可以帮助我吗 public class TweetAdapter extends ArrayAdapter
  • 等待异步 JavaScript 函数返回

    我正在使用第三方库提供的函数 该函数接受一个回调函数作为参数 但我想等待该回调被调用后再继续 有没有标准 可接受的方法来做到这一点 我不确定这是否适合您 但您可以通过将代码分成 2 个函数来实现所需的结果 假设这是您打算做的 基本上这是你原
  • 如何在具有传递性的MySQL连接(同表)中选择不同的对?

    我面临着一个设计非常糟糕的数据库 其中有一个非规范化的表 X 该表 X 应该与另一个表 Y 具有 N M 关系 问题在于 这种关系目前是 1 N 而到目前为止 偷工减料的解决方案是在有多个注册表需要关联时复制条目 简化一下 我有这个 ID
  • 这些代码中哪一段在 Java 中速度更快?

    a for int i 100000 i gt 0 i b for int i 1 i lt 100001 i 答案就在那里这个网站 http www mydeveloperconnection com html JavaTrap htm
  • 关于 NaCL 加密库的问题

    我正在寻找实现加密系统的库 并对使用 NaCl 网络和密码学库特别感兴趣盒子功能 http nacl cr yp to box html 显然 它使用对称加密 XSalsa20 用于公私加密的 Curve25519 和用于身份验证的 Pol