Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Is there a way to make output from QCryptographicHash readable QByteArray?
Forum Updated to NodeBB v4.3 + New Features

Is there a way to make output from QCryptographicHash readable QByteArray?

Scheduled Pinned Locked Moved Solved General and Desktop
qbytearray
15 Posts 4 Posters 1.2k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    Christian Ehrlicher
    Lifetime Qt Champion
    wrote on 17 Jun 2021, 16:57 last edited by Christian Ehrlicher
    #2

    Hashes are normally printed as base64 and so it's $6$Lt5bExFakB7nrZEN$3KHS5HLNe8UwSxGQY6foF3vJiv/VxiGi2WWvz04c4OpoXgIB37GeaF6ILFtGhHZSMA7hL/6nGmEHeRRADXXWQ1

    QCryptographicHash *hash

    You leak this instance, why do you create it on the heap at all?

    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
    Visit the Qt Academy at https://academy.qt.io/catalog

    A 1 Reply Last reply 17 Jun 2021, 17:06
    3
    • M Offline
      M Offline
      mrjj
      Lifetime Qt Champion
      wrote on 17 Jun 2021, 16:57 last edited by mrjj
      #3

      Hi

      • I must be dumb or not know something.
        We all know here you are not dumb and there is a vaste universe of stuff we dont know but

      QByteArray::constData() should be perfectly fine
      but make sure the bytearray lives long enough for for crypt() to use it while still in scope.

      1 Reply Last reply
      1
      • C Christian Ehrlicher
        17 Jun 2021, 16:57

        Hashes are normally printed as base64 and so it's $6$Lt5bExFakB7nrZEN$3KHS5HLNe8UwSxGQY6foF3vJiv/VxiGi2WWvz04c4OpoXgIB37GeaF6ILFtGhHZSMA7hL/6nGmEHeRRADXXWQ1

        QCryptographicHash *hash

        You leak this instance, why do you create it on the heap at all?

        A Offline
        A Offline
        artwaw
        wrote on 17 Jun 2021, 17:06 last edited by
        #4

        @Christian-Ehrlicher my bad but this is inly excerpt. In the program it is a member and is deleted in the destructor.
        And it is on the heap since I don't know how to initialise it otherwise (method selection). One of the constrains I face is that it has to be SHA-512 and only that.

        So you say QByteArray::toBase64 should suffice?

        @mrjj I examined and tested the code from which excerpts are here, worked over 100 times both in loop with no wait and waiting for user input.

        For more information please re-read.

        Kind Regards,
        Artur

        C J 2 Replies Last reply 17 Jun 2021, 17:14
        0
        • A artwaw
          17 Jun 2021, 17:06

          @Christian-Ehrlicher my bad but this is inly excerpt. In the program it is a member and is deleted in the destructor.
          And it is on the heap since I don't know how to initialise it otherwise (method selection). One of the constrains I face is that it has to be SHA-512 and only that.

          So you say QByteArray::toBase64 should suffice?

          @mrjj I examined and tested the code from which excerpts are here, worked over 100 times both in loop with no wait and waiting for user input.

          C Offline
          C Offline
          Christian Ehrlicher
          Lifetime Qt Champion
          wrote on 17 Jun 2021, 17:14 last edited by
          #5

          @artwaw said in Is there a way to make output from QCryptographicHash readable QByteArray?:

          And it is on the heap since I don't know how to initialise it otherwise (method selection).

          I don't understand this? Why does

          QCryptographicHash hash(QCryptographicHash::Sha512);

          not work?

          So you say QByteArray::toBase64 should suffice?

          Yes

          Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
          Visit the Qt Academy at https://academy.qt.io/catalog

          1 Reply Last reply
          2
          • A artwaw
            17 Jun 2021, 17:06

            @Christian-Ehrlicher my bad but this is inly excerpt. In the program it is a member and is deleted in the destructor.
            And it is on the heap since I don't know how to initialise it otherwise (method selection). One of the constrains I face is that it has to be SHA-512 and only that.

            So you say QByteArray::toBase64 should suffice?

            @mrjj I examined and tested the code from which excerpts are here, worked over 100 times both in loop with no wait and waiting for user input.

            J Offline
            J Offline
            JonB
            wrote on 17 Jun 2021, 17:28 last edited by
            #6
            This post is deleted!
            1 Reply Last reply
            0
            • A Offline
              A Offline
              artwaw
              wrote on 17 Jun 2021, 17:32 last edited by artwaw
              #7

              IT WORKS!
              Thank you!

              @Christian-Ehrlicher That works, of course. But outside of the example it looks like this:
              I wrapped all those hash-generating bits into a small class. For convenience, I have there:

              private:
                  QRandomGenerator generator;
                  QCryptographicHash *hash;
              

              In the constructor I init the generator and the hash. So I have hash = new QCryptographicHash(QCryptographicHash::Sha512); that is later deleted in the destructor. It apparently is a weak day for me but I failed to find a way of this private member NOT to be on the heap.

              EDIT:
              @JonB I saw your comment :)
              I understood, just at this hour I am not entirely online, just from time to time :)

              For more information please re-read.

              Kind Regards,
              Artur

              J 1 Reply Last reply 17 Jun 2021, 17:37
              1
              • A artwaw
                17 Jun 2021, 17:32

                IT WORKS!
                Thank you!

                @Christian-Ehrlicher That works, of course. But outside of the example it looks like this:
                I wrapped all those hash-generating bits into a small class. For convenience, I have there:

                private:
                    QRandomGenerator generator;
                    QCryptographicHash *hash;
                

                In the constructor I init the generator and the hash. So I have hash = new QCryptographicHash(QCryptographicHash::Sha512); that is later deleted in the destructor. It apparently is a weak day for me but I failed to find a way of this private member NOT to be on the heap.

                EDIT:
                @JonB I saw your comment :)
                I understood, just at this hour I am not entirely online, just from time to time :)

                J Offline
                J Offline
                JonB
                wrote on 17 Jun 2021, 17:37 last edited by JonB
                #8

                @artwaw
                Personally I don't worry about heap vs stack as some others do, when I did Python it's all heap anyway. And sometimes I heap to avoid include dependencies in header files.

                But why can't you have QCryptographicHash hash(QCryptographicHash::Sha512); as the member variable instead of pointer?

                A 1 Reply Last reply 17 Jun 2021, 17:42
                0
                • J JonB
                  17 Jun 2021, 17:37

                  @artwaw
                  Personally I don't worry about heap vs stack as some others do, when I did Python it's all heap anyway. And sometimes I heap to avoid include dependencies in header files.

                  But why can't you have QCryptographicHash hash(QCryptographicHash::Sha512); as the member variable instead of pointer?

                  A Offline
                  A Offline
                  artwaw
                  wrote on 17 Jun 2021, 17:42 last edited by
                  #9

                  @JonB When I do:

                  private:
                      QCryptographicHash hash(QCryptographicHash::Sha512);
                  

                  I get instant /Users/(username)/cpp/512hash/cryptoclass/cryptoclass.h:24: error: no type named 'Sha512' in 'QCryptographicHash'

                  For more information please re-read.

                  Kind Regards,
                  Artur

                  J 2 Replies Last reply 17 Jun 2021, 17:49
                  0
                  • A artwaw
                    17 Jun 2021, 17:42

                    @JonB When I do:

                    private:
                        QCryptographicHash hash(QCryptographicHash::Sha512);
                    

                    I get instant /Users/(username)/cpp/512hash/cryptoclass/cryptoclass.h:24: error: no type named 'Sha512' in 'QCryptographicHash'

                    J Offline
                    J Offline
                    JonB
                    wrote on 17 Jun 2021, 17:49 last edited by JonB
                    #10

                    @artwaw
                    Ah! That will be because you are in the "sometimes I heap to avoid include dependencies in header files" I mentioned :)

                    Intentionally or not, in your .h file you have preceded this line with

                    class QCryptographicHash;
                    

                    That allows QCryptographicHash * declarations to the incomplete type.

                    You will need

                    #include <QCryptographicHash>
                    

                    to make the declaration acceptable. If that is what you wish to do.

                    I see for example you alreday have

                    QRandomGenerator generator;
                    

                    so you have chosen to do that one with include.

                    A 1 Reply Last reply 17 Jun 2021, 17:51
                    0
                    • J JonB
                      17 Jun 2021, 17:49

                      @artwaw
                      Ah! That will be because you are in the "sometimes I heap to avoid include dependencies in header files" I mentioned :)

                      Intentionally or not, in your .h file you have preceded this line with

                      class QCryptographicHash;
                      

                      That allows QCryptographicHash * declarations to the incomplete type.

                      You will need

                      #include <QCryptographicHash>
                      

                      to make the declaration acceptable. If that is what you wish to do.

                      I see for example you alreday have

                      QRandomGenerator generator;
                      

                      so you have chosen to do that one with include.

                      A Offline
                      A Offline
                      artwaw
                      wrote on 17 Jun 2021, 17:51 last edited by
                      #11

                      @JonB Believe me or not but I do have it.
                      0d4539e8-71d3-4683-8004-459706d7945c-image.png

                      For more information please re-read.

                      Kind Regards,
                      Artur

                      J 1 Reply Last reply 17 Jun 2021, 17:51
                      0
                      • A artwaw
                        17 Jun 2021, 17:51

                        @JonB Believe me or not but I do have it.
                        0d4539e8-71d3-4683-8004-459706d7945c-image.png

                        J Offline
                        J Offline
                        JonB
                        wrote on 17 Jun 2021, 17:51 last edited by
                        #12

                        @artwaw
                        And that's in the .h file, not just in the .cpp?

                        A 1 Reply Last reply 17 Jun 2021, 17:52
                        0
                        • J JonB
                          17 Jun 2021, 17:51

                          @artwaw
                          And that's in the .h file, not just in the .cpp?

                          A Offline
                          A Offline
                          artwaw
                          wrote on 17 Jun 2021, 17:52 last edited by
                          #13

                          @JonB Yes. I tend to do all includes in the header.

                          For more information please re-read.

                          Kind Regards,
                          Artur

                          1 Reply Last reply
                          0
                          • A artwaw
                            17 Jun 2021, 17:42

                            @JonB When I do:

                            private:
                                QCryptographicHash hash(QCryptographicHash::Sha512);
                            

                            I get instant /Users/(username)/cpp/512hash/cryptoclass/cryptoclass.h:24: error: no type named 'Sha512' in 'QCryptographicHash'

                            J Offline
                            J Offline
                            JonB
                            wrote on 17 Jun 2021, 17:55 last edited by
                            #14

                            @artwaw said in Is there a way to make output from QCryptographicHash readable QByteArray?:

                            I get instant /Users/(username)/cpp/512hash/cryptoclass/cryptoclass.h:24: error: no type named 'Sha512' in 'QCryptographicHash'

                            Then I have no idea why you get a "no type" error for

                            QCryptographicHash hash(QCryptographicHash::Sha512);
                            

                            in a .h but not in a .cpp or why

                            hash = new QCryptographicHash(QCryptographicHash::Sha512);
                            

                            is acceptable.

                            A 1 Reply Last reply 17 Jun 2021, 17:57
                            1
                            • J JonB
                              17 Jun 2021, 17:55

                              @artwaw said in Is there a way to make output from QCryptographicHash readable QByteArray?:

                              I get instant /Users/(username)/cpp/512hash/cryptoclass/cryptoclass.h:24: error: no type named 'Sha512' in 'QCryptographicHash'

                              Then I have no idea why you get a "no type" error for

                              QCryptographicHash hash(QCryptographicHash::Sha512);
                              

                              in a .h but not in a .cpp or why

                              hash = new QCryptographicHash(QCryptographicHash::Sha512);
                              

                              is acceptable.

                              A Offline
                              A Offline
                              artwaw
                              wrote on 17 Jun 2021, 17:57 last edited by artwaw
                              #15

                              @JonB I can live with one pair of new/delete :)

                              Thank you all who contributed and especially to @Christian-Ehrlicher for pointing me out the obvious.

                              For more information please re-read.

                              Kind Regards,
                              Artur

                              1 Reply Last reply
                              1

                              11/15

                              17 Jun 2021, 17:51

                              • Login

                              • Login or register to search.
                              11 out of 15
                              • First post
                                11/15
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • Users
                              • Groups
                              • Search
                              • Get Qt Extensions
                              • Unsolved