2017-11-22 2 views
0

Also zur Zeit mein Code sieht ungefähr so ​​aus:SHA_DIGEST_LENGTH undefined

int main(){ 
    char input[1024] 
    size_t length; 
    unsigned char hash[SHA_DIGEST_LENGTH]; 
    fgets(input,1024,stdin); 
    length = sizeof(input); 
    SHA(input,hash,length) 
} 

ich einen Kompilierungsfehler erhalten mir zu sagen, dass SHA_DIGEST_LENGTH nicht definiert ist. Ich dachte, beim Kompilieren einschließlich -lssl und -lcrypto würde es irgendwie für mich definieren?

+0

Ich glaube, ich könnte #include hinzufügen und dann OpenSSL_add_all_algorithms nennen(); – MoStack

+1

* definiere es für mich *, nicht das wird es ** nicht ** definieren. Das sind Linker-Optionen und es lohnt sich, darüber zu lesen. – WedaPashi

Antwort

0

SHA_DIGEST_LENGTH in sha.h definiert, wenn Sie OpenSSL verwenden, müssen Sie diese Header-Datei

+0

Ja, jetzt habe ich #include gemacht, aber es scheint das nicht zu finden. Danke für die Antwort! – MoStack

+0

sollte es bei/usr/include/openssl sein, aber wenn openssl an einem anderen nicht standardmäßigen Speicherort installiert ist, suchen Sie nach dieser Datei und geben ihren Verzeichnisnamen in der Option -I in Ihrem Build ein – Pras

+0

Ja danke, ich glaube nicht Bibliothek wurde installiert. Ich denke, es ist in der libssl-dev-Bibliothek. Installierte das und es scheint gut zu funktionieren. Danke noch einmal! Eine letzte Sache, wenn ich den Hash nach dem Aufruf von SHA1 ausdrücke, sollte ich Nicht-Standard-Zeichen bekommen? – MoStack