MinGW и добавление библиотеки - PullRequest
0 голосов
/ 04 марта 2012

Я хочу использовать эту библиотеку с MinGW, и я пытался заставить пример работать.

Возможно ли это?Я посмотрел на , используя это , но мне все еще не удалось это сделать.

Кроме того, я приветствую альтернативные предложения для sha1 хеширования строки.

Это ошибки, которые я получаю, когда пытаюсь скомпилировать sha1.cpp или пример программы:

sha1.h: 29: 17: ошибка: дополнительная квалификация 'SHA1 ::' для члена'lrot' [-fpermissive]

sha1.h: 30: 15: ошибка: дополнительная квалификация 'SHA1 ::' на члене 'storeBigEndianUint32' [-fpermissive]

sha1.h: 31: 15: ошибка: дополнительная квалификация 'SHA1 ::' для члена 'hexPrinter' [-fpermissive]

Спасибо.

Часть 2

#include <fstream>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include "sha1.h"
using namespace std;

int main(int argc, char *argv[])
{
    const char* BYTES;
    ifstream myFile("word.txt");
    if (! myFile)
    {
        cout << "Error openning file" << endl;
        return -1;
    }
    while (! myFile.eof())
    {
        getline(myFile, BYTES);
        cout << BYTES << endl;
        SHA1* sha1 = new SHA1();
        sha1->addBytes(BYTES, strlen(BYTES));
        unsigned char* digest = sha1->getDigest();
        sha1->hexPrinter(digest, 20);
        delete sha1;
        free(digest);
    }
    myFile.close();
    return 0;
} 

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Я могу поручиться за Crypto ++ и Botan .Обе они - отличные криптографические библиотеки, и я использовал их как с Windows, так и с mingw.Они делают sha1 и другие хеши.

0 голосов
/ 05 марта 2012

Проблема в дополнительном «SHA1 ::» в следующих строках файла SHA1.h:

static Uint32 SHA1::lrot( Uint32 x, int bits );
static void SHA1::storeBigEndianUint32( unsigned char* byte, Uint32 num );
static void SHA1::hexPrinter( unsigned char* c, int l );

Их следует изменить на

static Uint32 lrot( Uint32 x, int bits );
static void storeBigEndianUint32( unsigned char* byte, Uint32 num );
static void hexPrinter( unsigned char* c, int l );

функции определяются в классе SHA1, и нет необходимости снова определять, что они находятся в SHA1.Обратите внимание, что тот же неизмененный файл может быть принят Visual Studio (у меня была такая же проблема несколько лет назад)

...