标签: libsodium

如何正确使用libsodium以使其在版本之间兼容?

我打算在文件中存储一堆记录,然后用libsodium签署每条记录.但是,我希望我的程序的未来版本能够检查当前版本的签名,理想情况下反之亦然.

对于当前版本的Sodium,使用Ed25519算法进行签名.我想,默认原语可以在Sodium的新版本中改变(否则libsodium不会暴露出选择特定版本的方法,我认为).

我是不是该...

  1. 始终使用默认原语(即crypto_sign)
  2. 使用特定原语(即crypto_sign_ed25519)
  3. Do(1),但存储sodium_library_version_major()文件中的值(在专用的'钠版本'字段或一般'文件格式修订'字段中)并退出当前运行的版本较低
  4. 做(3),还要存放 crypto_sign_primitive()
  5. 做(4),还有商店crypto_sign_bytes()和朋友

......还是我应该完全做其他事情?

我的程序将用C语言编写.

c compatibility cryptography libsodium

15
推荐指数
1
解决办法
853
查看次数

自制程序和 libsodium 出现问题

我的系统(macOS)上有几个版本的 php:7.4、8.0、8.1 和 8.2

我需要针对不同的项目定期在这些之间进行切换。我遇到了 laravel 的问题,当我尝试在链接 PHP7.4 时运行任何代客命令时,我收到错误消息:

dyld[68591]: Library not loaded: /usr/local/opt/libsodium/lib/libsodium.23.dylib 
Run Code Online (Sandbox Code Playgroud)

它尝试了几个文件夹,但找不到此版本的 libsodium,但 libsodium.26.dylib 存在。我尝试使用brew来安装libsodium 23:

brew install libsodium@1.0.23
Run Code Online (Sandbox Code Playgroud)

但收到此消息:

Warning: No available formula with the name "libsodium@1.0.23". Did you mean libsodium?
Run Code Online (Sandbox Code Playgroud)

编辑:所以有一个小错误,我认为 libsodium dylib 文件中的数字对应于安装的 libsodium 版本(我认为安装了 1.0.26,因为 dylib 文件被称为 libsodium.26.dylib)

然而事实并非如此,因为 libsodium 的最新版本是 1.0.19。

这解释了为什么“brew install libsodium@1.0.23”不起作用(因为该版本尚不存在)。

在这种情况下,我如何让代客寻找 libsodium.26.dylib,而不是像现在这样的 23?

php homebrew laravel libsodium php-7.4

15
推荐指数
2
解决办法
9418
查看次数

如何使用公钥/私钥加密php中的数据?

我有一小段一些数据(小于1kb),我希望用户代理从我的网站发送到其他网站.为了让其他站点验证我是创建字符串的那个,我有两个选项.

  1. 服务器请回要我确认(如paypal,openid等..)
  2. 我使用公钥/私钥来证明我发送的消息(如PGP,DKIM等)

我不想设置HMAC,因为这意味着我必须为每个站点使用自定义键,这将是一个痛苦.

在这两个选择中,似乎#2会节省带宽,这使它看起来是更好的选择.

那么如何使用PHP设置公钥/私钥加密,是否有任何缺点?

php cryptography pgp php-openssl libsodium

12
推荐指数
2
解决办法
3万
查看次数

如何在Wampserver中安装PHP扩展libsodium?

我正在尝试使用PECL 安装Libsodium PHP扩展,但我不知道如何获取所需的dll文件.我想在Windows 7(64位)上使用Wampserver.

谁能帮我?

php wampserver php-extension libsodium

12
推荐指数
2
解决办法
6314
查看次数

如何在ASP.NET上包含libsodium.net

我有一个基于ASP.NET(使用.asmx)文件的旧web服务构建.我需要使用sodium.net - 不幸的是它在加载依赖的libsodium.dll文件时失败了.关于我犯错的任何想法?

  • 我通过NuGet添加了libsodium.net.

  • 我已将64位DLL重命名为"libsodium.dll"(以及其他命名约定).

  • 我试图直接引用libsodium.dll,但VS拒绝它(不是有效的DLL).所以我把它添加为"内容"而不是"复制到输出".

  • 构建后我可以看到网站/ Bin文件夹包含sodium.dll(.NET程序集)和libsodium.net.

  • 当我尝试使用libsodium.net时,我得到:

    ERROR 2015-02-02 11:14:27,118 13798ms [41] CabinetService doRequest - Caught:'Sodium.SodiumCore'的类型初始化程序引发异常.System.TypeInitializationException:'Sodium.SodiumCore'的类型初始值设定项引发了异常.---> System.DllNotFoundException:无法加载DLL'libsodium.dll':找不到指定的模块.(来自HRESULT的异常:0x8007007E)位于Sodium.SodiumCore..cctor()的DynamicDllInvokeType.sodium_init()---内部异常堆栈跟踪结束---位于Sodium.SSecretBox.Create(Byte)的Sodium.SodiumCore.LibraryName() []消息,Byte [] nonce,Byte []键)在Macaroons.SecretBoxCryptoAlgorithm.Encrypt(Byte []键,Byte [] plainText)中的c:\ Projects\Macaroons.Net\Macaroons.Net\SecretBoxCryptoAlgorithm.cs:line 58

所以它找不到"libsodium.dll",即使它在Bin文件夹中.我也尝试删除对"sodium.net"的依赖,在我收到运行时错误后说"sodium.net"丢失了 - 当我重新添加它时,该错误消失了,我得到了上面的那个(表示"sodium.net"正确加载).

所以我在"C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\cabinetservice"中打开网站shadow文件夹并搜索"sodium".唯一的结果是某些子文件夹中的"sodium.dll".没有"libsodium.dll".

显然,ASP.NET在创建网站的卷影副本时会忽略"libsodium.dll"文件.

我还尝试将libsodium.dll(32位)添加到C:\ Windows\System32,将libsodium.dll(64位)添加到C:\ Windows\SysWOW64.结果相同.

我尝试过C:\ Windows\Microsoft.NET\assembly\GAC_32\libsodium和C:\ Windows\Microsoft.NET\assembly\GAC_64\libsodium.结果相同.

如何让ASP.NET了解依赖?

c# asp.net dll libsodium

9
推荐指数
1
解决办法
4997
查看次数

使用libsodium,randombytes错误为iOS构建zeromq

我正在使用这种方法为iOS构建zeromq库:https: //github.com/drewcrawford/libzmq-ios

除了出现3次的警告外,构建日志看起来很好:

 CC crypto_scalarmult/curve25519/ref10/libsodium_la-fe_0_curve25519_ref10.lo
randombytes/salsa20/randombytes_salsa20_random.c:278:17: warning: comparison of constant 18446744073709551615 with expression of type
      'const size_t' (aka 'const unsigned long') is always true [-Wtautological-constant-out-of-range-compare]
    assert(size <= ULONG_LONG_MAX);
    ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.2.sdk/usr/include/assert.h:93:25: note:
      expanded from macro 'assert'
    (__builtin_expect(!(e), 0) ? __assert_rtn(__func__, __FILE__, __LINE__, #e) : (void)0)
                        ^
randombytes/sysrandom/randombytes_sysrandom.c:202:17: warning: comparison of constant 18446744073709551615 with expression of type 'const size_t'
      (aka 'const unsigned long') is always true [-Wtautological-constant-out-of-range-compare]
    assert(size <= ULONG_LONG_MAX);
    ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.2.sdk/usr/include/assert.h:93:25: note:
      expanded from macro 'assert'
    (__builtin_expect(!(e), 0) ? …
Run Code Online (Sandbox Code Playgroud)

c++ xcode zeromq ios libsodium

9
推荐指数
1
解决办法
638
查看次数

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


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

php encryption cryptography aes libsodium

9
推荐指数
2
解决办法
9904
查看次数

在 PHP 7.1 中安装 libsodium 时出错

我在 PHP 7.1.25 中,mcrypt 是当前使用的扩展,mcrypt 将在 PHP 7.2 中被弃用,Libsodium 将被添加到 PHP 7.2 的核心扩展中

现在我需要尝试在 PHP 7.1 中安装 libsodium 并查看它是如何工作的,按照这个https://lukasmestan.com/install-libsodium-extension-in-php7但安装失败。也更新了 PECL 包。看下面的错误!

任何帮助将非常感激。提前致谢!

$ sudo pecl install -f libsodium
downloading libsodium-2.0.20.tgz ...
Starting to download libsodium-2.0.20.tgz (28,504 bytes)
.........done: 28,504 bytes
4 source files, building
running: phpize
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303
building in /tmp/pear/temp/pear-build-rootsL5uMO/libsodium-2.0.20
running: /tmp/pear/temp/libsodium/configure --with-php-config=/usr/bin/php-config
checking for grep that handles long lines and -e... /bin/grep …
Run Code Online (Sandbox Code Playgroud)

php mcrypt libsodium

9
推荐指数
2
解决办法
6796
查看次数

安装Libsodium(Amazon EC2)时库失败

我无法弄清楚如何让我的EC2实例上的Libsodium运行起来.

尝试检查安装是否成功时:

php7 --info | grep sodium
Run Code Online (Sandbox Code Playgroud)

我收到以下警告:

PHP Warning:  PHP Startup: Invalid library (maybe not a PHP library) 'sodium.so' in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的:

  • 使用pecl7安装libsodium安装Libsodium.
  • 使用最新的tar.gz安装Libsodium
  • 完全重新安装PHP7(使用apache 2.4)

这个特殊警告不断弹出,我的钠功能仍然无法使用.

有没有人有任何在Amazon EC2实例上在PHP 7(+)上安装Libsodium的经验,还是我必须等待7.2稳定可用?

编辑:

对于在这个问题得到解答之后阅读此内容的任何人:这是包管理器中的一个错误(https://github.com/jedisct1/libsodium-php/issues/156)问题已经解决,重新安装pecl7安装libsodium修复问题.

php amazon-ec2 libsodium server php-7

8
推荐指数
1
解决办法
512
查看次数

在Visual Studio中使用Xamarin构建跨平台应用程序时应使用哪个libsodium .NET包装器?

我对使用Xamarin进行移动应用程序开发非常感兴趣。为了提供安全的通讯,我想使用NaCl或更具体的:libsodium
在libsodium网站上,它说使用C#使用libsodium有三种选择:libsodium-netNSecNitraLibSodium
我的问题:哪个是构建移动应用程序的最佳包装?缺点和优点是什么?

谢谢。

c# cryptography visual-studio xamarin libsodium

8
推荐指数
1
解决办法
405
查看次数