Hos*_*een 4 javascript cryptography public-key libsodium nacl-cryptography
我想使用合适的 libsodium 密钥对作为用户身份,但我还不知道我将提供哪些加密功能。
libsodium 中似乎有 3 种类型的密钥对生成:
crypto_box_keypair()
crypto_kx_keypair()
crypto_sign_keypair()
Run Code Online (Sandbox Code Playgroud)
另外,似乎有 3 种类型的密钥:
// Source: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/libsodium-wrappers/index.d.ts
export type KeyType = 'curve25519' | 'ed25519' | 'x25519';
Run Code Online (Sandbox Code Playgroud)
我不知道哪种密钥类型对应于哪个密钥对生成函数,或者它们是否完全对应。
那么,问题是:
crypto_box_keypair()与crypto_box_easy())。密钥对类型和加密功能/能力之间的兼容性矩阵是什么?如果您想为操作创建密钥对box,请使用crypto_box_keypair()。
如果您需要密钥对进行签名,请使用crypto_sign_keypair()。
如果您需要密钥对进行密钥交换,请使用crypto_kx_keypair()。
不保证用于一项操作的密钥可用于另一项操作。密码学中的良好卫生习惯是永远不要将密钥用于两个不同的目的。
如果您需要派生用于密钥交换和签名的密钥对,则可以使用crypto_kx_seed_keypair()和crypto_sign_ed25519_seed_keypair()来实现。还提供了盒子操作crypto_box_seed_keypair()。
这些函数确定性地从种子中导出密钥对。该种子可以被视为您实际的密钥,您可以从中计算不同类型的密钥对。
| 归档时间: |
|
| 查看次数: |
1812 次 |
| 最近记录: |