Функция sha1 в cpp (C ++)

Я начну с того, что ничего не знаю о C ++ и искал в Google, нет ничего, что могло бы заставить меня понять, как использовать SHA1 в C ++. нашел этот, хотя Objective C: SHA1, но его объективный c im не уверен, что это то же самое.

Мне нужно сделать следующее:

У меня много файлов, я компилирую их, выполнив ./make.sh, и в одном файле с именем server.cpp мне нужен SHA1 info_hash, который вставлен в эту часть:

Csql_query(m_database, "insert into @files (info_hash, mtime, ctime)
 values (?, unix_timestamp(), unix_timestamp())").p(i.first).execute();

так что я вроде как думаю, что мне нужно сделать следующий sha1 (?). "?" мне не нужен info_hash. я думаю, что он где-то генерируется и "?" это переменная.

поэтому, пожалуйста, не говорите мне добавлять какие-либо классы или что-то еще, потому что я НЕ понимаю, как это сделать, если мне нужно добавить что-то в начале файла, сообщите мне об этом.


person Treat    schedule 04.03.2011    source источник
comment
Я правильно понимаю? Вы говорите, что ничто не заставит вас понять, как решать эту проблему на C ++. Мы также не должны указывать вам, что делать, потому что вы все равно не поймете. Почему вы вообще задаете вопрос, связанный с C ++? Какого ответа вы ожидаете? C ++ - это не PHP, встроенной функции sha1("cat") нет.   -  person stakx - no longer contributing    schedule 02.08.2016


Ответы (3)


Хорошей библиотекой для SHA1 и других функций является cryptopp.

Вот еще один вопрос, ответ на который - cryptopp: Библиотека быстрого кроссплатформенного хеширования C / C ++ < / а>

person Zan Lynx    schedule 04.03.2011
comment
В PHP я делаю: sha1 (cat) PHP возвращает 9d989e8d27dc9e0ec3389fc855f142c3d40f0c50, как я могу сделать это на C ++? - person Treat; 04.03.2011
comment
Чтобы использовать SHA (), вам понадобится libssl-dev, а затем ссылка на -lssl -lcrypto, и вы можете пойти дальше с (скажем, ARM8 / Graviton2) поддержкой ЦП в зависимости от флагов. Множество примеров по GH в настоящее время дано 10 лет назад. Системный вызов bash также будет вариантом, если производительность не имеет значения. - person mckenzm; 11.05.2021

Похоже, что часть .p(i.first) уже заменяет значение i.first на ? в вашем запросе. Предположительно i.first будет подходящим значением для столбца info_hash.

Невозможно сказать наверняка, не видя больше вашего кода.

person Greg Hewgill    schedule 04.03.2011
comment
В PHP я делаю: sha1 (cat) PHP возвращает 9d989e8d27dc9e0ec3389fc855f142c3d40f0c50, как я могу сделать это на C ++? - person Treat; 04.03.2011

Вот библиотека, которая реализует SHA1 () - вероятно, есть лучше, т.е. больше эффективные библиотеки, но здесь есть хорошее объяснение того, как их использовать.

Если вы хотите вычислить SHA1 файла, для этого есть утилита Microsoft.

person Martin Beckett    schedule 04.03.2011
comment
Привет, @martin, возможно, он объясняет все для людей, которые хоть немного понимают, что такое C ++, но я понятия не имею, что такое библиотека или как ее использовать (хорошо, должно быть похоже на классы php, но все же). - person Treat; 04.03.2011
comment
мне нужно, чтобы кто-то отредактировал код, который я дал, или сказал мне, как его отредактировать, чтобы аргумент, переданный как информационный хэш, был закодирован кодировкой sha1, потому что мне нужно, чтобы он был в таблице, такой как sha1 (word), потому что я делаю то же самое с php, и после того, как мне нужно сопоставить их два вместе. - person Treat; 04.03.2011
comment
@Treat: Вы не можете рассчитывать на нашу помощь, если вы не желаете прилагать никаких усилий к решению этой проблемы самостоятельно. - person Greg Hewgill; 04.03.2011
comment
@greg Я не хочу быть программистом на C ++, мне совсем не нужно знать этот язык. Мне просто нужно знать, как это сделать (я покажу, как это можно сделать на php) - person Treat; 04.03.2011
comment
Я делаю: sha1 (cat) PHP возвращает 9d989e8d27dc9e0ec3389fc855f142c3d40f0c50, как я могу сделать это на C ++? - person Treat; 04.03.2011