问题标签 [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 投票
1 回答
143 浏览

php - 安装 libsodium 到 wampserver 错误功能不存在

我想使用libsodium加密和保护我在服务器-客户端之间传输的数据。我正在使用 MySQL 作为数据库服务器的 PHP-PDO 应用程序,目前它处于离线模式。

  1. 我拿了lipsodium.dll 并将其添加到同一目录php.exe
  2. 我把php_libsodium.dll它添加到:

C:\wamp64\bin\php\php7.0.10\ext

然后我添加了这个脚本来测试它是否真的存在:

我收到一条错误消息:

致命错误:调用未定义函数 Sodium\library_version_major()

然后在网上搜索了几遍后,我将其更改为:

仍然得到错误:

致命错误:调用未定义的函数 sodium_library_version_major()

0 投票
0 回答
2397 浏览

node.js - 如何为 React Native 打补丁/填充 crypto.getRandomValues

我正在将一些为 NodeJS 创建的包移植到 React Native,使用ReactNativify将 Node API 对象依赖项重写为它们的 browserify 等价物。

其中之一是crypto。在transformer.js(或.babelrc)我有:

在 ReactNativifyglobal.js中有这段代码(我排除了,因为它不适合生产):

.

我的第一个问题:如何getRandomValues正确修补生产?


还有第二个选项,那就是使用react-native-crypto(的克隆crypto-browserify

理想情况下,我应该能够做到这一点transformer.js

但是react-native-crypto使用rn-nodeify而不是 ReactNativify,它会生成一个shim.js要导入index.android.js/index.ios.js的代码,类似于以下代码:

我不知道在使用 ReactNativify 时是否需要所有这些 shim 代码,并且找不到好的来源,所以......

我的第二个问题:如何以react-native-crypto“正确的 ReactNativify 方式”使用?


我在 ReactNativify 和 react-native-crypto repo 中创建了 github 问题:

版本:

0 投票
1 回答
942 浏览

c - 无法让 mingw windows 工作的 libsodium 预建库

我想要的是,根据文档,只需使用以下代码:

在文档的 windows安装部分,它说明了 MinGW32 的预编译 windows 版本。当我在 MinGW 中使用代码块时,我认为这些应该可以工作。

我下载了libsodium-1.0.13-mingw.tar.gz文件并解压了它。我拿走了libsodium-win32文件夹的所有内容并将它们放在 MinGW 根目录中C:\Program Files (x86)\CodeBlocks\MinGW(文件夹include,binlib匹配,让我相信这是正确的方法)。

然后,我使用上面的代码片段在代码块中创建一个新项目,并使用 -std=c99 进行编译(尽管 -std=gnu99 没有区别)并收到以下警告:

这向我表明它由于某种原因找不到或实际上不包含<sodium.h>. 奇怪的是,如果我只是接受sodium_init()(不检查语句中的输出if),它会给我一个警告说明:

这向我表明它确实被解析了,因为它注意到缺乏检查结果。检查构建日志,我发现在引发错误时会mingw32-gcc.exe引发-Wunused-result警告mingw32-g++


有人可以帮我弄清楚如何让钠在我的设置中起作用吗?

0 投票
2 回答
2287 浏览

php-7 - 带有 PHP 7.0 的 AWS EC2 标准 AWS AMI - 安装 libsodium 配方

(为清楚起见进行了编辑-在接受的答案中滚动)

Libsodium 已经为 PHP 7 做好了准备。在此过程中,命名空间被删除,并添加了用于方法的前缀 sodium_ 和用于常量的 SODIUM_ 前缀。版本方法也被删除。

此 github 页面记录了所有新函数和常量,并且该项目提供与 \Sodium 命名空间的向后兼容性:https ://github.com/Firehed/sodium/blob/master/src/we_cant_have_nice_things.php

配方:在 PHP 7 和 AWS AMI 上安装 Libsodium

命令行测试以验证是否安装了钠

测试 php 函数以验证密码哈希的调用模式

感谢@GracefulRestart 的帮助。

0 投票
1 回答
597 浏览

php - PHP paragonie/halite - 缺少钠\常量?

我想实现简单的加密。

我正在使用最新的 PHP 7.1.8,由于 mcrypt 已被弃用,我了解了 libsodium。安装它,这就是我的 PHP 信息的样子:

PHP钠

一切似乎都井然有序。

然后我安装了 paragonie/halite v3.2.0,并尝试了来自 github 页面的简单示例:

运行此返回:

Fatal error: Uncaught Error: Undefined constant 'Sodium\CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE' in /app/vendor/paragonie/halite/src/KeyFactory.php on line 274

在此处输入图像描述

在查看了一些代码之后,我可以看到代码确实使用了这些常量。

我已经看到在\Sodium命名空间中使用了旧版本的 PHP 扩展,并且由于它被确认成为 PHP7.2 核心扩展,因此对函数进行了重构,以用作sodium_*.

也许我遗漏了一些东西,但我的问题是,谁能告诉我我遗漏这些常量的原因是什么?

谢谢!

0 投票
1 回答
2691 浏览

php - 在 PHP 7.2 中使用 libsodium

在 PHP 7.2 中,libsodium 应该是 PHP 核心的一部分。是否需要文件中的任何条目php.ini才能使其工作,或者它应该开箱即用?

我正在尝试使用PHP 7.2.0beta2和类似sodium_version_string()sodium_compare未知的功能。我正在使用 PHP 泊坞窗 ( 7.2-rc-fpm )

以防万一 - 我没有安装任何 PECL 扩展,因为据我了解它不应该是必要的。

0 投票
1 回答
152 浏览

rust - 为什么 Rust/氧化钠 PublicKeys 在序列化时会以长度为前缀?

氧化钠定义PublicKey为:

new_type扩展为

因此,PublicKey定义为 32 字节的简单包装器。

当我定义自己的 32 字节 ( MyPubKey) 包装器时,它的 bincode 序列化为 32 字节。

当我对 serialise 进行 bincode 时PublicKey,它​​是 40 个字节 - 32 个字节以u64包含长度的 little-endian 为前缀。

结果:

PublicKey用氧化钠的new_type!宏创建的类型和类型之间有什么区别MyPublicKey

如何从 a 中获取 32 个字节,PublicKey以便有效地序列化它们?

0 投票
1 回答
2180 浏览

php - Libsodium“调用未定义的函数 sodium_randombytes_buf”

试图按照这里的例子,但它给了我

最重要的是,密钥对似乎正在生成奇怪的字符串,例如:

kÿòjƒFDú{î—4]F◊î¸˜ßˆu…®_•A∞+.

这正常吗?

这是我的代码

0 投票
1 回答
859 浏览

php - 使用私钥快速钠解密

我在客户端使用 Swift Sodium,因为我的服务器在通过 API 与我共享数据之前使用 libsodium 加密数据。

现在我有一个现有的私钥和一个字符串格式的公钥。我现在想在 iOS 上使用 Swift 解密加密数据。

如何使用我拥有的公钥和私钥生成 Sodium Key Pair?

另外理想情况下,我应该只使用私钥来解密数据。那么我如何只使用私钥作为字符串来做到这一点。

我的解密代码如下所示 -

在上面的代码中,我解密的字符串总是空的。

服务器正在使用以下功能加密数据 -

在服务器解密逻辑

0 投票
1 回答
553 浏览

java - 如何修复 java 项目中的 libsodium 错误

当我从 libsodium 创建一个 SigningKey 的新实例时出现此异常,如何解决此问题?