pysodium crypto_box_open 抛出 ValueError
pysodium crypto_box_open throwing ValueError
我在 pysodium 0.6.6
中使用带有 python 绑定的 libsodium
当使用 crypto_box
和 crypto_box_open
时,我总是得到 ValueError
。这是一个简单的例子:
import pysodium
import random
serverPK, serverSK = pysodium.crypto_box_keypair()
clientPK, clientSK = pysodium.crypto_box_keypair()
testText = "test message"
nonce1 = str(random.random())
nonce2 = str(random.random())
cipherText = pysodium.crypto_secretbox(testText,nonce1,clientPK)
message = pysodium.crypto_secretbox_open(cipherText, nonce2, clientSK)
print message
这里是错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/.../pysodium-0.6.6/pysodium/__init__.py", line 181, in crypto_box_open
__check(sodium.crypto_box_open(msg, padded, ctypes.c_ulonglong(len(padded)), nonce, pk, sk))
File "/Users/.../pysodium-0.6.6/pysodium/__init__.py", line 70, in __check
raise ValueError
ValueError
crypto_box_keypair()
创建一个密钥对,与 crypto_box()
.
一起使用
crypto_secretbox()
不是非对称加密:一个密钥用于加密和解密。如果这确实是您想要的,可以通过这种方式生成密钥:
key = pysodium.randombytes(pysodium.crypto_secretbox_KEYBYTES)
对于给定的密钥,随机数对于每条消息都必须是唯一的,并且必须是 pysodium.crypto_secretbox_NONCEBYTES
字节长。它可以是一个简单的计数器,也可以是一个随机数:
nonce = pysodium.randombytes(pysodium.crypto_secretbox_NONCEBYTES)
与密钥不同,随机数可以是public。但加密和解密必须相同:
cipherText = pysodium.crypto_secretbox(testText, nonce, key)
message = pysodium.crypto_secretbox_open(cipherText, nonce, key)
libsodium 文档提供了有关如何使用 box and secretbox 的示例,可以轻松将其转换为 pysodium 等效项。
我在 pysodium 0.6.6
中使用带有 python 绑定的 libsodium当使用 crypto_box
和 crypto_box_open
时,我总是得到 ValueError
。这是一个简单的例子:
import pysodium
import random
serverPK, serverSK = pysodium.crypto_box_keypair()
clientPK, clientSK = pysodium.crypto_box_keypair()
testText = "test message"
nonce1 = str(random.random())
nonce2 = str(random.random())
cipherText = pysodium.crypto_secretbox(testText,nonce1,clientPK)
message = pysodium.crypto_secretbox_open(cipherText, nonce2, clientSK)
print message
这里是错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/.../pysodium-0.6.6/pysodium/__init__.py", line 181, in crypto_box_open
__check(sodium.crypto_box_open(msg, padded, ctypes.c_ulonglong(len(padded)), nonce, pk, sk))
File "/Users/.../pysodium-0.6.6/pysodium/__init__.py", line 70, in __check
raise ValueError
ValueError
crypto_box_keypair()
创建一个密钥对,与 crypto_box()
.
crypto_secretbox()
不是非对称加密:一个密钥用于加密和解密。如果这确实是您想要的,可以通过这种方式生成密钥:
key = pysodium.randombytes(pysodium.crypto_secretbox_KEYBYTES)
对于给定的密钥,随机数对于每条消息都必须是唯一的,并且必须是 pysodium.crypto_secretbox_NONCEBYTES
字节长。它可以是一个简单的计数器,也可以是一个随机数:
nonce = pysodium.randombytes(pysodium.crypto_secretbox_NONCEBYTES)
与密钥不同,随机数可以是public。但加密和解密必须相同:
cipherText = pysodium.crypto_secretbox(testText, nonce, key)
message = pysodium.crypto_secretbox_open(cipherText, nonce, key)
libsodium 文档提供了有关如何使用 box and secretbox 的示例,可以轻松将其转换为 pysodium 等效项。