2017-09-14 5 views
1

Essayer de suivre les exemples here, mais il me donneLibsodium « appel à la fonction non définie sodium_randombytes_buf »

Fatal error: Uncaught Error: Call to undefined function sodium_randombytes_buf() 

En plus de cela, les paires de clés semble être générer des chaînes étranges comme:

kÿòjƒFDú{î—4]F◊î¸˜ßˆu…®_•A∞+ .

Est-ce normal?

Voici mon code

<?php 

// send 
$message = 'Hi, this is Alice'; 
$alice_to_bob_kp = sodium_crypto_box_keypair_from_secretkey_and_publickey(
    file_get_contents('./keys/sec-user-1_box_key.txt'), 
    file_get_contents('./keys/pub-user-2_box_key.txt') 
); 
$nonce = sodium_randombytes_buf(SODIUM_CRYPTO_BOX_NONCEBYTES); 
$ciphertext = sodium_crypto_box(
    $message, 
    $nonce, 
    $alice_to_bob_kp 
); 




// receive 
$bob_to_alice_kp = sodium_crypto_box_keypair_from_secretkey_and_publickey(
    // $bob_box_secretkey, 
    // $alice_box_publickey 
    file_get_contents('./keys/sec-user-2_box_key.txt'), 
    file_get_contents('./keys/pub-user-1_box_key.txt') 
); 
$nonce = sodium_randombytes_buf(SODIUM_CRYPTO_BOX_NONCEBYTES); 
$plaintext = sodium_crypto_box_open(
    $ciphertext, 
    $nonce, 
    $bob_to_alice_kp 
); 
if ($plaintext === false) { 
    die("Malformed message or invalid MAC"); 
} 
die($plaintext); 
+0

Vous devez exiger dans leurs fichiers, vous avez besoin – delboy1978uk

+0

c'est une extension – AFwcxx

Répondre

1

Il n'y a pas cette fonction comme sodium_randombytes_buf() le code dans l'exemple utilise \Sodium\randombytes_buf().

Edit:

De l'histoire de bug: "Le sodium_randombytes_ * symboles ont été enlevés un certain temps, comme PHP offrent désormais des fonctions similaires sans cette extension"

Bug #74896 sodium's .h defines some functions without .c implementation

+0

Ils ont utilisé le préfixe 'sodium_ *' à la place de l'espace de noms dans la nouvelle version – AFwcxx

+0

Vous devrez alors fournir votre code pour reviev. – mracer164

+0

ok. mise à jour le contenu de la question – AFwcxx