libsodium如何产生密钥对

时间:2015-10-07 10:55:48

标签: encryption libsodium nacl-cryptography

对于libsodium中的public key encryptiondiffie-hellman,我通常只使用randombytes_buf生成32个随机字节来创建私钥,然后使用{{1}导出公钥(在需要时) }。

使用crypto_scalarmult_base生成密钥对(语法除外)有什么好处吗?或者这个功能基本上是这样做的吗?

2 个答案:

答案 0 :(得分:4)

这正是crypto_box_keypair()函数的作用。

此功能的好处是清晰度,并保证正确生成密钥。

答案 1 :(得分:1)

https://download.libsodium.org/doc/public-key_cryptography/public-key_signatures.html

例如:

    unsigned char pk[crypto_sign_PUBLICKEYBYTES]; //Variable declarations
    unsigned char sk[crypto_sign_SECRETKEYBYTES]; Variable declarations
    crypto_sign_keypair(pk, sk);

    NSData *privateKeyData = [NSData dataWithBytes:sk length:crypto_box_SECRETKEYBYTES];
    NSData *publicKeyData = [NSData dataWithBytes:pk length:crypto_box_PUBLICKEYBYTES];

    NSLog(@"%@",privateKeyData);  // target publick key data and secret key data
    NSLog(@"%@",publicKeyData);  
    //Other 
    NSLog(@"%s\n\n=====\n\n\n%s",pk,sk); //(nullable const void *)bytes
    Byte *byte = (Byte *)[publicKeyData bytes];
    NSLog(@"%s",byte);