问题标签 [libsodium]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
991 浏览

c++ - 尝试编译 zeromq 源时出现错误 LNK2019

我正在尝试编译 zeromq 源代码,但出现以下错误:

我正在使用 Visual Studio 2013 更新 4/Windows 7 x64

首先,我令人满意地编译了 libsodium 库。

然后我将 libsodium 头文件目录路径链接到其他依赖项,并将 libsodium.lib 链接到其他库目录。我还在其他依赖项中指定了库的名称。

我尝试在win32架构和x64架构下编译它,但我得到了同样的错误。

我知道 __imp 前缀用作我想要使用的函数的桥梁,所以如果我适当地链接了库,为什么会出现这个错误?

控制台日志:

提前致谢。

0 投票
1 回答
416 浏览

c - Libsodium 签名和验证

功能

在 message 前面添加签名m。但是,我无法在文档中找到 libsodium 是直接对消息进行签名,还是先创建一个哈希。如果它使用散列,使用什么样的散列方法?

0 投票
1 回答
125 浏览

c - libsodium crypto_stream_salsa20_xor 的相同输入和输出缓冲区

我想知道为crypto_stream_salsa20_xor. 我试图查看源文件。crypto_stream_salsa20_xor使用crypto_core_salsa20,但此函数仅出现在头文件中:

0 投票
1 回答
367 浏览

java - Android NDK:两个预构建的共享库,但其中一个依赖于另一个

我正在编写一个依赖于两个预构建共享库(A 和 B)的 Android 应用程序。这两个库都配置为使用 armeabi 和 armeabi-v7a 架构。

第一个预建库 A 是 libsodium。第二个预构建库 B 是一个依赖于 libsodium 的 Rust 库。在编译 Rust 预建库时,libsodium 被用作依赖项。

现在,我想在我的 Android 应用程序中使用我的两个预构建库 A 和 B。使用 System.loadLibrary() 加载 A 工作得很好。但是当我加载B时,出现B找不到A中定义的方法的错误:

java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "crypto_sign_ed25519_detached" referenced by "libB.so"...

我的 Android.mk 如下:

rust-manager.c 文件是我使用 javah 生成的 C 包装器,其中包含将我的本机 Java 函数映射到 Rust 库的 C 函数,但我认为此时它可以忽略不计。任何帮助将非常感激!

0 投票
1 回答
352 浏览

c - ARMv5 上的 libsodium 段错误

armv5tejl-unknown-linux-gnueabihf我可以在 Ubuntu 中很好地使用 libsodium 1.0.7,但是在尝试将 libsodium 库交叉编译为 armv5 架构( )时似乎存在一些问题。我用过./configure --host=armv5tejl-unknown-linux-gnueabihf 然后make DESTDIR=/home/myself/ARM/

所有文件都生成良好(头文件和静态和共享库文件),我可以编译和链接一个小的测试 C 程序,然后当它在我的 ARMv5 目标上执行时生成分段错误(工具链,一切都很好,我编译的所有其他内容& 不使用 libsodium 的链接在我的 ARM 机器上运行得非常好):

我还在https://download.libsodium.org/doc/installation/index.html尝试了 ARM 指令的官方交叉编译,但由于缺少nosys.specs文件,配置失败。有没有什么地方可以下载这个(我已经看过了,似乎它必须是专门为 libsodium 包生成的)?

0 投票
1 回答
1317 浏览

ios - 为 iOS 交叉编译 libsodium

我想交叉编译 libsodium 加密库以在 iOS 上使用。具体来说,我想为 armv7、armv7s 和 arm64 编译它,以便它适用于较旧和较新的 iPhone。

我按照 libsodium 网站 ( https://download.libsodium.org/doc/installation/index.html ) 上的说明进行交叉编译并运行如下配置脚本:

和 armv7s-apple-darwin 和 armv8-apple-darwin 相同(我认为/希望与 arm64 相同,因为不支持 arm64)。然后我做了“make install”,成功没有错误。但是,如果我随后检查了创建的静态库:

它告诉我:

对于所有这些。为什么这个静态库针对 x86_64 架构,而我针对 armv7、armv7s、armv8 架构?难道我做错了什么?

0 投票
2 回答
17067 浏览

php - 如何使用 Libsodium-PHP 加密/解密 AES


我需要用 PHP 加密/解密数据。我对此完全陌生,但是我读过 Libsodium-PHP 是 AES 加密的最佳工具。就像我研究过的其他 PHP 加密库一样,Libsoduim-PHP 似乎几乎没有提供有关如何使用该库的文档(我能够找到)。任何有 PHP 加密经验的人都可以为我指明一个好的学习资源的方向,或者使用 Libsoduim-PHP 编写几行示例代码吗?
非常感谢您的帮助,
阿特拉斯

0 投票
1 回答
313 浏览

android - 在 Android 中加密媒体(图片、视频和音频)的最安全方法

我必须确保我的应用程序拍摄的媒体(图片、视频和音频)是加密的,并且在应用程序范围之外不可见。为此,我不确定是否应该使用 AES 加密或 Libsodium。从论坛来看,这两种方法都受到了好评,那么就内存需求、速度和整体安全性而言,哪种方法最强大、最有效。

其次,在应用程序没有任何 Internet 连接的离线场景中,这是管理加密密钥的最安全方式吗?

0 投票
1 回答
553 浏览

php - PHP 和 Node.js 之间的 libsodium 实现差异

我有一个 PHP REST(网关)服务器。客户端是一个 node.js 服务器。它们之间交换的数据分别使用 PHP 和 Node 的 libsodium easy api 实现加密(crypto_secretbox)和解密(crypto_secretbox_open)。

PHP 中的加密数据在开头(盐)没有 16 个字节的零,而 node.js 中的加密数据有 16 个字节的零。

要在 PHP 中加密的数据节点上解密,我必须在调用 secretBox.decrypt 之前添加 16 个字节的零(盐)。

要在 PHP 上解密节点中加密的数据,我必须先删除 16 个字节的零,然后再调用 \Sodium\crypto_secretbox_open。

问题:这是最好的方法还是我遗漏了一些非常明显的东西?

0 投票
1 回答
2362 浏览

c# - 使用 libsodium-net 时,我不需要生成和存储盐吗?

注意我不是加密专家(这就是我使用像 NaCl 这样的库的原因)。

从我读过的关于这个主题的内容来看,将用户密码存储在数据库中的最安全方法是存储散列和用于生成该散列的盐。我决定为此目的使用 libsodium-net,但现在我在这个主题中留下了一个问题:我不需要生成和存储盐吗?我问是因为 libsodium-net 包含以下功能:

在生成或验证哈希时似乎不需要使用盐。事实上,没有接受盐的 ScryptHashString 和 ScryptHashStringVerify 的重载方法。我觉得我在这里遗漏了一些明显的东西。我是吗?或者 libsodium-net 是否消除了对盐的需求?