Tag Archives: C

Εντοπισμός documentation της βιβλιοθήκης libcrypt της OpenSSL για υπάρχουσες μεθόδους σε διανομές GNU/Linux.

Στο master thesis μου έπρεπε να κάνω ένα demo που να υλοποιεί ένα group key agreement. Μετά από πολύ ψάξιμο κατέληξα στην OpenSSL λόγο ότι έχει low level apis για να αναπτύσσεις ΚΑΙ δικό σου κρυπτογραφικό πρωτόκολλο.

Παρόλα αυτά υπήρχε δύσκολο-προς-εντοπισμό documentation έτσι το παρόν άρθρο το χρησιμοποιώ σαν index για το τι πρέπει να δώσω στην εντολή man ή που να πάω προκειμένου να μπορέσω να βρω πως χρησιμοποιείτε οι functions της βιβλιοθήκης.

  1. Getting Started βασική χρήση: Σύνδεσμος
  2. Diffie Hellman: Μεταβείτε σε αυτήν την σελίδα κάντε copy το όνομα μιας μεθόδου και σε τερματικό δώστε:
    man ^paste_την_function_που_κάνατε_copy_εδώ^
  3. BigNum για αριθμητική αριθμών για που λαμβάνουν μεγάλο χώρο στην μνήμη πχ.1024 ή 2048 bit ακεραίων:
    1. Όλες oι functions καταλογραφημένες είναι στο αποτέλεσμα της εντολής:
      man bn
    2. Για εκάστοτε function αναζητήστε:
      man ^όνομα_function_προηγούμενου_βήματος^
  4. Επίσημο Documentation για όλες της μεθόδους εδώ. Για εντοπισμό εγκατεστημένης έκδοσης δίνετε στο τερματικό:
    openssl version
Advertisements

Μεταγλώτηση κώδικα που χρησιμοποιεί MPI σε Ubuntu Linux για το εργαστήριο των Κατανεμημένων

Επικαιροποιω συχνά το άρθρο να είναι up-to-date παρακαλώ αφήστε σχόλια από κάτω για όποιο πρόβλημα

Σε ubuntu Linux ανοίγουμε ένα τερματικό και δίνουμε την εξής εντολή:

sudo apt-get install -y libopenmpi-dev openmpi-bin

Μετά για compile δίνουμε πάλι σε τερματικό:

mpicc -o ^binary_file^ ^source_code_file^ 

Για ευκολότερο debugging δοκιμάστε compile με:

mpicc -g -o ^binary_file^ ^source_code_file^ 

Σε segfaults θα λαμβάνετε καλύτερα τα errors ;).

Μετά μπορείτε να εκτελείτε το  εκτελέσιμο πρόγραμμα μέσω:

mpirun -np ^cluster_size^ ^binary_file^ 

Όπου ^cluster_size^ κάποιος αριθμός  (όχι και 1000000). Στην ουσία θα έχουμε έναν cluster με ^cluster_size^ κόμβους.

Μπορείτε με τον παρακάτω κώδικα να δοκιμάσετε τις εντολές:

#include "mpi.h"
#include %lt; stdio.g %gt;
int main( int argc,char *argv[] )
{
int rank, size;
MPI_Init( &argc, &argv );
MPI_Comm_rank( MPI_COMM_WORLD, &rank );
MPI_Comm_size( MPI_COMM_WORLD, &size );
printf( "Cluster size: %d\nTerminal ID: %d\n",size,rank );
MPI_Finalize();
return 0;
}

Δοκιμάστηκε τελευταία φορά σε Ubuntu 16.04 LTS στις 11/11/2018. Ακόμη ο κώδικας είναι διαθέσιμος στο εξής github repository: https://github.com/pc-magas/mpi-sample (ΜΗΝ κάνετε copy paste από πάνω.)

PS: Ένα tip για να μην παιδεύεστε με το output σε 1 τερματικό μπορείτε να τρέξετε το πρόγραμμα κάπως έτσι:

mpirun -np ^cluster_size^ xterm -hold -e ^binary_file^ & 

Με το παραπάνω θα τρέχετε κάθε node του cluster σε ξεχωριστό τερματικό. Εάν δεν έχετε εγκατεστημένο το xterm μπορείτε να χρησιμοποιήσετε τον terminal emulator που έρχεται με την διανομή σας παρόλα αυτά με το xterm θα μπορείτε να τρέχετε το πρόγραμμάσας χωρίς να κλείνει το τερματικό με το πέρας αυτού.