我想用一个合适的libsodium密钥对用户身份,但我还不知道我会提供什么样的加密功能。
似乎是在libsodium 3种密钥对生成的:
crypto_box_keypair()
crypto_kx_keypair()
crypto_sign_keypair()
此外,似乎有3种类型的键:
// Source: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/libsodium-wrappers/index.d.ts
export type KeyType = 'curve25519' | 'ed25519' | 'x25519';
我不知道是哪个键类型相对应生成密钥对的功能,或者如果它们对应的。
所以,这些问题:
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()
。
这些函数确定性地导出从种子密钥对。这种种子可以被认为是实际的密钥,从中可以计算出不同类型的密钥对。