Хэширование чисел в sha224

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Trilgon, 17 Sep 2017.

  1. Trilgon

    Trilgon New Member

    Joined:
    5 Jul 2017
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    Есть текстовой файл с числами от 0.7017017017017013 до 0.9999999999999999 в столбик.Как можно перевести эти числа в хэш sha224 используя C++ в Visual Studio?
    P.S Пробовал сам,но не получилось.
    Пример содержимого файла:
    0.7017017017017013
    0.7017017017017014
    0.7017017017017015
    0.7017017017017016
    0.7017017017017017
    0.7017017017017018
    0.7017017017017019
    0.7027027027027021
    0.7027027027027022
    0.7027027027027023
    0.7027027027027024
    0.7027027027027025
     
  2. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    Как пробовал? Что не получилось?
     
    Trilgon likes this.
  3. Trilgon

    Trilgon New Member

    Joined:
    5 Jul 2017
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    Не особо знаком хэшерованием,пробовал просто на лету всё делать,но нет,если проще на другом хэше сделать,то напиши пожалуйста на каком.
     
  4. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    Файлы проекта прикрепи и мы тебе укажем, где твоя ошибка и как ее исправить. Вариант хэширования в твоем случае не играет роли, т.к. задача разовая и нет каких-либо ограничений
     
    Trilgon likes this.
  5. Trilgon

    Trilgon New Member

    Joined:
    5 Jul 2017
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    #include<iostream>
    #include <iomanip>
    #include "sha224.h"
    using namespace std;
    int main(int argc, char *argv[])
    {
    for (double i = 1; i <= 999; ++i)
    for (double r = 1; r <= 9; ++r)
    cout << 0 << '.' << i << i << i << i << i << r << endl;
    return 0;
    }
     
  6. Trilgon

    Trilgon New Member

    Joined:
    5 Jul 2017
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    Пробовал по-разному,один фиг не получилось сделать так,чтобы сразу числа хэшировались.
     
  7. Trilgon

    Trilgon New Member

    Joined:
    5 Jul 2017
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
  8. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    _________________________
    Trilgon likes this.
  9. Trilgon

    Trilgon New Member

    Joined:
    5 Jul 2017
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    Его нет,так как я не понял как его нормально там реализовать,пробовал,но не получилось...
     
  10. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    что то вроде того можно сделать

    Code:
    $ cat main.cpp 
    #include <iostream>
    #include "sha224.h"
    #include <string.h>
    #include <sstream>
    
    using std::string;
    using std::cout;
    using std::endl;
    
    const char* ConvertDoubleToString(double value){
        std::stringstream ss ;
        ss << value;
        const char* str = ss.str().c_str();
        return str;
    }
    
    int main(int argc, char *argv[])
    {
        string hash   = "";
        string tmp_i  = "";
        string tmp_r  = "";
        for (double i = 1; i <= 10; ++i)
        {
            tmp_i = ConvertDoubleToString(i);
            for (double r = 1; r <= 9; ++r)
            {
                tmp_r = ConvertDoubleToString(r);
                hash = "0."+tmp_i+tmp_i+tmp_i+tmp_i+tmp_i+tmp_r;
                cout << hash << endl;
                hash = sha224(hash);
                cout << hash << endl;
            }
        }
    }
    
    

    Code:
    $ g++ main.cpp sha224.cpp -o sha224_sample
    
    $ ./sha224_sample | head -n 5
    0.111111
    93df830601538a1652a22f5a6d3c029cd733a88c4ac1dc21adbe8df9
    0.111112
    c0890409cdac1f98f369629cabee9dd5adc6ccb8c84fea5402f70ac3
    0.111113
    
     
    _________________________
    Trilgon likes this.
  11. Trilgon

    Trilgon New Member

    Joined:
    5 Jul 2017
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    Программа выводит только для 0.
    39303d65e3ec6458405d813332fa8f323ddeea7293bb27a6bd88ea49
    0.
    39303d65e3ec6458405d813332fa8f323ddeea7293bb27a6bd88ea49
    0.
    39303d65e3ec6458405d813332fa8f323ddeea7293bb27a6bd88ea49
    0.
    39303d65e3ec6458405d813332fa8f323ddeea7293bb27a6bd88ea49
    0.
    ...
     
  12. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    хм ну у меня то работает, показывай main.cpp
     
    _________________________
    Trilgon likes this.
  13. Trilgon

    Trilgon New Member

    Joined:
    5 Jul 2017
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    Code:
    #include <iostream>
    #include "sha224.h"
    #include <string.h>
    #include <sstream>
    
    using std::string;
    using std::cout;
    using std::endl;
    
    const char* ConvertDoubleToString(double value) {
        std::stringstream ss;
        ss << value;
        const char* str = ss.str().c_str();
        return str;
    }
    
    int main(int argc, char *argv[])
    {
        string hash = "";
        string tmp_i = "";
        string tmp_r = "";
        for (double i = 1; i <= 10; ++i)
        {
            tmp_i = ConvertDoubleToString(i);
            for (double r = 1; r <= 9; ++r)
            {
                tmp_r = ConvertDoubleToString(r);
                hash = "0." + tmp_i + tmp_i + tmp_i + tmp_i + tmp_i + tmp_r;
                cout << hash << endl;
                hash = sha224(hash);
                cout << hash << endl;
            }
        }
    }
     
  14. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    печаль, один в один код
    при компиляции ошибок нет?
     
    _________________________
    Trilgon likes this.
  15. Trilgon

    Trilgon New Member

    Joined:
    5 Jul 2017
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    1>sha224.cpp
    1>c:\users\r2bdo\documents\visual studio 2017\projects\crash safer\crash safer\sha224.cpp(129): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>c:\program files (x86)\windows kits\10\include\10.0.15063.0\ucrt\stdio.h(1772): note: см. объявление "sprintf"
    1>Generator.cpp
    1>Создание кода...
    1>Crash safer.vcxproj -> C:\Users\R2BDO\Documents\Visual Studio 2017\Projects\Crash safer\Debug\Crash safer.exe
    1>Crash safer.vcxproj -> C:\Users\R2BDO\Documents\Visual Studio 2017\Projects\Crash safer\Debug\Crash safer.pdb (Partial PDB)
    1>Сборка проекта "Crash safer.vcxproj" завершена.
    ========== Перестроение всех проектов: успешно: 1, с ошибками: 0, пропущено: 0 ==========
     
  16. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    хм, либо tmp_i не формируется, либо конструкция
    hash = "0." + tmp_i + tmp_i + tmp_i + tmp_i + tmp_i + tmp_r;
    в visual studio работает иначе
    попробуй вывести на экран tmp_i

    tmp_i = ConvertDoubleToString(i);
    cout << tmp_i << endl;
     
    _________________________
    Trilgon likes this.
  17. Trilgon

    Trilgon New Member

    Joined:
    5 Jul 2017
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    Вывелись пробелы пустые
     
  18. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    значит функция конвертирования(ConvertDoubleToString) не отрабатывает

    можешь погуглить другую реализацию конверта числа в строку
     
    _________________________
    Trilgon likes this.
  19. SooLFaa

    SooLFaa Members of Antichat

    Joined:
    17 Mar 2014
    Messages:
    530
    Likes Received:
    499
    Reputations:
    154
    Все проще чем вы думаете. Ты подаешь на инпут в консоли в потоке чере pipeline. Он не подает инпут вообще, отсюда и ноль. В visualstduo тебе надо забирать каким нить getchr или любой другой функцией строку.
     
    _________________________
    Trilgon and t0ma5 like this.
  20. Trilgon

    Trilgon New Member

    Joined:
    5 Jul 2017
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    Можете написать,если не затруднит?(хотя бы примерно)