问题标签 [nacl-cryptography]

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 回答
1115 浏览

javascript - 在 libsodium 中使用哪种密钥对类型?各有什么不同的能力?

我想使用合适的 libsodium 密钥对作为用户身份,但我还不知道我将提供哪些加密功能。

libsodium 中似乎有 3 种类型的密钥对生成:

此外,似乎有 3 种类型的键:

我不知道哪种密钥类型对应于哪个密钥对生成函数,或者它们是否完全对应。

所以,问题:

  1. 每个密钥对都设计为与某些功能一起使用(例如,crypto_box_keypair()with crypto_box_easy())。密钥对类型和加密功能/能力之间的兼容性矩阵是什么?
  2. 如果有一种可以与所有功能一起使用的键类型,它是哪一种?
0 投票
1 回答
548 浏览

javascript - TweetNaCl 在尝试解密时给出错误的编码

0 投票
1 回答
3448 浏览

paramiko - import paramiko throws '_sodium' has no function error

在 Python3 上导入 paramiko 会引发以下异常。

有谁知道为什么?

0 投票
1 回答
490 浏览

python - PyNaCl - 打印 PrivateKey 原始十六进制值

为了简单起见,我目前正在尝试使用椭圆曲线并使用 python。

我有一个正确实例化的此类 NaCl/PrivateKey)的实例。

但是查看它的公共类变量,我似乎只能查询大小。

是我的误解吗,是否有一个公共变量我可以查询来获取底层的私钥数据(同样我只是在玩和学习,而不是为了生产)。

我已经能够打印 privateKey 实例,它会打印一个像这样的直接字节数组:\xa6_\xe5\xa3\xc3\xdd\x96\x04C\x03%\x0f\xe7)y\x92\n\xf7#\xee\xcdo\xff\xaf%\xedZ\xd4\x0e\xecr\xb4

然后,我可以b在 Python repl 中为 a添加前缀,并.toHex调用 get:

是否有任何 Python 忍者可以指导我直接从实例进行更直接的访问?

我能做的最好的是print(binascii.hexlify(privateKey.__bytes__()))- 但这似乎不是一种合适的方式,__bytes__直接访问

0 投票
2 回答
1301 浏览

python - 如何让 AWS Lambda 上的 NaCL 正常工作?

我在 AWS lambda 上成功使用了 Pychromeless 存储库。

现在我需要使用 NaCL 依赖项来解密字符串,但我得到了

Unable to import module 'lambda_function': /var/task/lib/nacl/_sodium.abi3.so

有一个补充

invalid ELF header  

在 AWS Lambda 上运行该函数时。

我知道这是与 AWS Lambda 环境相关的特定问题,因为我可以在我的 Mac 上的 docker 内运行该函数。

这是我的 requirements.txt 文件

这是码头文件

和makefile:

没有解密部分,代码工作得很好。所以这个问题与 PyNaCl 100% 相关。

解决这个问题有什么帮助吗?

0 投票
1 回答
552 浏览

javascript - 是否可以使用 Tweetnacl 库使用 base58 密钥签署消息?

我使用Tweetnacl.js生成了一个密钥对:

现在我有一个 base58 密钥对(base58 中的公钥和密钥),我想用这样的密钥对消息进行签名:

base58这是来自这个图书馆的。

但是我收到此错误:

实际上,该nacl.sign函数需要一个 64 位的密钥,而我的 base58 版本不是这种情况。

有没有办法在保留 base58 的同时修复它,或者我应该使用由 生成的原始 Ed25519 格式nacl.randomBytes(32),即未转换的格式?

0 投票
1 回答
1020 浏览

javascript - 如何使用 JS-NaCl 加密 JSON 对象并使用 php Libsodium 解密

我设法找到了一个用于前端加密的 Libsodium js 库(JS-NaCl),并且还为 Libsodium 加密/解密设置了我的 PHP 后端。当我像下面这样加密 JSON 对象时

当我使用它触发登录方法时,它会使用 encrypt 方法加密 JSON 对象,因此我发送如下内容:

在 php 后端代码中,我正在这样做:

相同的键,相同的随机数,但它不会回显任何内容。这个怎么解密??

0 投票
0 回答
925 浏览

javascript - TweetNaCl TypeError:意外类型,使用 Uint8Array

尝试使用 TweetNaCl 的符号功能时遇到问题。它总是抛出错误的意外类型,使用 Uint8Array。

将返回一个包含 secretkey 和 publickey 的对象 .. 但是在尝试签名时

错误很严重

任何人都知道如何克服这个?谢谢你 :)

0 投票
1 回答
554 浏览

python - 在近协议中使用 ed25519 进行签名和验证

我正在尝试使用signMessage在 javascript 中对消息进行签名,并使用 python 对其进行验证以实现jwt authentication

这是使用near-api-js在 javascript 中签名消息的代码

Output gives:
public key fe20d3e271876c8329c74dcdbe95e32586ee5cf67def1c0cc9e0b8d0e4285813
signature 61d864f40667075da6f920f811def3b83330a6cce49b7bd24eb4711f29abcf55d6d2eaf6f67bf74f20a2f79598f7fd42b4f70db41446d73d596b58d31825710c

这是我的后端python代码:

但我无法让它工作,它给出了一个无效的签名。

0 投票
0 回答
47 浏览

python-3.x - 用于 nuki smartlock 2.0 的 pynacl crypto_core_hsalsa20

我需要 crypto_core_hsalsa20 函数来为我的NUKI 增加密钥。

双方使用函数 dh1 a 计算 DH Key k。密钥 0DE40B998E0E330376F2D2FC4892A6931E25055FD09F054F99E93FECD9BA611E 8. 双方使用函数 kdf1 a 从 k 导出一个长期共享密钥 s。共享密钥 217FCB0F18CAF284E9BDEA0B94B83B8D10867ED706BFDEDBD2381F4CB3B8F730

4.2 密钥推导函数kdf1

用于从 dh1 计算的共享密钥中导出一个长期密钥

我已经用 nacl.publik.Box (=dh1) 函数计算了 DH Key k。

有人可以告诉我如何在 pynacl 中使用 kdf1 函数吗?谢谢!