我打算在文件中存储一堆记录,然后用libsodium签署每条记录.但是,我希望我的程序的未来版本能够检查当前版本的签名,理想情况下反之亦然.
对于当前版本的Sodium,使用Ed25519算法进行签名.我想,默认原语可以在Sodium的新版本中改变(否则libsodium不会暴露出选择特定版本的方法,我认为).
我是不是该...
crypto_sign)crypto_sign_ed25519)sodium_library_version_major()文件中的值(在专用的'钠版本'字段或一般'文件格式修订'字段中)并退出当前运行的版本较低crypto_sign_primitive()crypto_sign_bytes()和朋友......还是我应该完全做其他事情?
我的程序将用C语言编写.
我的系统(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?
我有一小段一些数据(小于1kb),我希望用户代理从我的网站发送到其他网站.为了让其他站点验证我是创建字符串的那个,我有两个选项.
我不想设置HMAC,因为这意味着我必须为每个站点使用自定义键,这将是一个痛苦.
在这两个选择中,似乎#2会节省带宽,这使它看起来是更好的选择.
那么如何使用PHP设置公钥/私钥加密,是否有任何缺点?
我正在尝试使用PECL 安装Libsodium PHP扩展,但我不知道如何获取所需的dll文件.我想在Windows 7(64位)上使用Wampserver.
谁能帮我?
我有一个基于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了解依赖?
我正在使用这种方法为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)
我需要用PHP加密/解密数据.我对此完全陌生,但我读过Libsodium-PHP是AES加密的最佳工具.就像我研究过的其他PHP加密库一样,Libsoduim-PHP似乎几乎没有提供如何使用该库的文档(我能够找到).任何有PHP加密经验的人都可以指向一个好的学习资源的方向,或者使用Libsoduim-PHP编写几行示例代码吗?
非常感谢你的帮助,
Atlas
我在 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) 我无法弄清楚如何让我的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)
这是我到目前为止所尝试的:
这个特殊警告不断弹出,我的钠功能仍然无法使用.
有没有人有任何在Amazon EC2实例上在PHP 7(+)上安装Libsodium的经验,还是我必须等待7.2稳定可用?
编辑:
对于在这个问题得到解答之后阅读此内容的任何人:这是包管理器中的一个错误(https://github.com/jedisct1/libsodium-php/issues/156)问题已经解决,重新安装pecl7安装libsodium修复问题.
我对使用Xamarin进行移动应用程序开发非常感兴趣。为了提供安全的通讯,我想使用NaCl或更具体的:libsodium。
在libsodium网站上,它说使用C#使用libsodium有三种选择:libsodium-net,NSec和NitraLibSodium
我的问题:哪个是构建移动应用程序的最佳包装?缺点和优点是什么?
谢谢。
libsodium ×10
php ×6
cryptography ×4
c# ×2
aes ×1
amazon-ec2 ×1
asp.net ×1
c ×1
c++ ×1
dll ×1
encryption ×1
homebrew ×1
ios ×1
laravel ×1
mcrypt ×1
pgp ×1
php-7 ×1
php-7.4 ×1
php-openssl ×1
server ×1
wampserver ×1
xamarin ×1
xcode ×1
zeromq ×1