Печать генератора ключей libsodium ed25519
Я пытаюсь сгенерировать ключи с помощью libsoudium и распечатать их. Где хранятся эти ключи и как их найти? Это то, что я пытаюсь сделать в C.
unsigned char pk[crypto_sign_PUBLICKEYBYTES];
unsigned char sk[crypto_sign_SECRETKEYBYTES];
int crypto_sign_keypair(unsigned char *pk, unsigned char *sk);
printf("%s", pk);
это выводит: H H. Что это значит?
документация для функций, которые я пытаюсь вызвать. https://download.libsodium.org/doc/public-key_cryptography/public-key_signatures.html
2 ответа
Решение
В то время как ключи состоят из некоторого числа char
нет никакой гарантии, что символы будут видимыми символами ASCII. Я думаю, что вы, вероятно, хотите напечатать их с циклом, подобным этому;
for(i=0;i<crypto_sign_PUBLICKEYBYTES;i++)
printf("%2.2x",pk[i]);
puts("");
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);