SHA1 HASH

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Der Begriff SHA, ausgeschrieben secure hash algorithm, bezeichnet eine Gruppe standardisierter kryptologischer Hashfunktionen.
      Hört sich erst einmal fürchterlich kompliziert an, beschreibt aber nur die Erstellung eines Prüfwertes und ist Grundlage für die digitale Signatur.
      Es wird aus einem gegebenen "String" ein Prüfwert berechnet.
      Dieser Prüfwert kann dann von jeder Stelle aus nachberechnet werden und muss immer zum gleichen Ergebnis führen, um die Integrität der Nachricht zu garantieren.
      Er soll auch nicht zurückrechnbar sein auf die originale Nachricht und soll einmalig sein. Also keine zwei unterschiedliche Nachrichten dieser Welt erhalten den gleichen Schlüssel.

      Einfaches Beispiel zur Anwendbarkeit:
      Eine Datenbank hat eingerichtete Benutzer.
      Möchte man sich nun als Benutzer dieser Datenbank mit der Datenbank verbinden, könnte man den Benutzernamen und das Passwort in "Plain Text" also unverschlüsselt übertragen.
      Das wäre natürlich keine gute Idee! Das Passwort wäre dann unverschlüsselt in einem TCP/IP Paket zu lesen!

      Die Lösung:
      Man erzeugt von dem Passwort und weiterer Daten einen SHA Schlüssel und sendet diesen zur Datenbank. Diese berechnet ihrerseits einen Schlüssel, welche mit dem empfangenen übereinstimmen muss.

      BASCOM-Quellcode

      1. '*******************************************************************************
      2. ' SHA-1 HASH
      3. '*******************************************************************************
      4. '
      5. ' Copyright Michael Koecher aka six1 1/2011
      6. ' -> http://www.six1.net/ michael@koecher-web.de
      7. '
      8. ' http://creativecommons.org/licenses/by-sa/3.0/de/
      9. '
      10. ' Sie dürfen:
      11. '
      12. ' * das Werk bzw. den Inhalt vervielfältigen, verbreiten und öffentlich zugänglich machen
      13. '
      14. ' * Abwandlungen und Bearbeitungen des Werkes bzw. Inhaltes anfertigen
      15. '
      16. ' Zu Den Folgenden Bedingungen:
      17. '
      18. ' * Namensnennung.
      19. ' Sie müssen den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
      20. '
      21. ' * Keine kommerzielle Nutzung.
      22. ' Dieses Werk darf nicht für kommerzielle Zwecke verwendet werden.
      23. '
      24. ' * Weitergabe unter gleichen Bedingungen.
      25. ' Wenn Sie das lizenzierte Werk bzw. den lizenzierten Inhalt bearbeiten
      26. ' oder in anderer Weise erkennbar als Grundlage für eigenes Schaffen verwenden,
      27. ' dürfen Sie die daraufhin neu entstandenen Werke bzw. Inhalte nur
      28. ' unter Verwendung von Lizenzbedingungen weitergeben, die mit denen
      29. ' dieses Lizenzvertrages identisch oder vergleichbar sind.
      30. '
      31. ' Wobei gilt:
      32. '
      33. ' * Verzichtserklärung
      34. ' Jede der vorgenannten Bedingungen kann aufgehoben werden, sofern Sie
      35. ' die ausdrückliche Einwilligung des Rechteinhabers dazu erhalten.
      36. '
      37. ' * Sonstige Rechte
      38. ' Die Lizenz hat keinerlei Einfluss auf die folgenden Rechte:
      39. ' - Die gesetzlichen Schranken des Urheberrechts und sonstigen
      40. ' Befugnisse zur privaten Nutzung
      41. ' - Das Urheberpersönlichkeitsrecht des Rechteinhabers
      42. ' - Rechte anderer Personen, entweder am Lizenzgegenstand selber oder
      43. ' bezüglich seiner Verwendung, zum Beispiel Persönlichkeitsrechte abgebildeter Personen.
      44. '
      45. ' Hinweis
      46. '
      47. ' Im Falle einer Verbreitung müssen Sie anderen alle Lizenzbedingungen
      48. ' mitteilen, die für dieses Werk gelten. Am einfachsten ist es,
      49. ' einen Link auf http://creativecommons.org/licenses/by-sa/3.0/de/ einzubinden.
      50. '
      51. '*******************************************************************************
      52. $regfile = "m128def.dat"
      53. '-------------------------------------------------------------------------------
      54. 'for 16MHz
      55. $crystal = 16000000
      56. '-------------------------------------------------------------------------------
      57. $baud = 57600
      58. $hwstack = 10
      59. $swstack = 20
      60. $framesize = 100
      61. Open "Com1:" For Binary As #1
      62. '-------------------------------------------------------------------------------
      63. ' VARIABLES
      64. '-------------------------------------------------------------------------------
      65. Dim Sha1_hash(8) As Long
      66. Dim Sha1_hash_1 As Long At Sha1_hash Overlay
      67. Dim Sha1_hash_2 As Long At Sha1_hash + 4 Overlay
      68. Dim Sha1_hash_3 As Long At Sha1_hash + 8 Overlay
      69. Dim Sha1_hash_4 As Long At Sha1_hash + 12 Overlay
      70. Dim Sha1_hash_5 As Long At Sha1_hash + 16 Overlay
      71. Dim Sha1_hash_6 As Long At Sha1_hash + 20 Overlay
      72. Dim Sha1_hash_7 As Long At Sha1_hash + 24 Overlay
      73. Dim Sha1_hash_8 As Long At Sha1_hash + 28 Overlay
      74. Dim Sha1_hash_byte(20) As Byte At Sha1_hash Overlay
      75. Dim Sha1_hash_str As String * 20 At Sha1_hash Overlay
      76. Dim Sha1_work(80) As Long
      77. Dim Sha1_data(16) As Long
      78. Dim Sha1_data_byte(64) As Byte At Sha1_data Overlay
      79. ' absolut maximum 63 Chars!!!
      80. Dim Hash_text As String * 63
      81. '-------------------------------------------------------------------------------
      82. ' SUB, FUNCTION define
      83. '-------------------------------------------------------------------------------
      84. Declare Sub Do_sha1_hash(byval Hash_str As String)
      85. '-------------------------------------------------------------------------------
      86. ' MAIN
      87. '-------------------------------------------------------------------------------
      88. ' let's define our text, we want to get the SHA-1 Hash from
      89. ' 63 Chars
      90. 'Hash_text = "abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc"
      91. ' 3 Chars
      92. Hash_text = "abc"
      93. ' Call to SHA-1 function
      94. Call Do_sha1_hash(hash_text)
      95. ' Output the result
      96. Print "Cypher Text: ";hash_text
      97. Print "SHA-1 : $" ; Hex(sha1_hash_1) ; Hex(sha1_hash_2) ; Hex(sha1_hash_3) ; Hex(sha1_hash_4) ; Hex(sha1_hash_5)
      98. ' that's all :-) have fun, michael
      99. End
      100. Sub Do_sha1_hash(byval Password As String)
      101. Local X As Byte , Y As Byte , Z As Byte , Help_char As String * 1
      102. Local T As Byte
      103. local len_word as word
      104. ' string data into long array
      105. For Z = 1 To 64
      106. Sha1_data_byte(z) = &H00
      107. Next
      108. X = 1
      109. Y = 4
      110. While X <= Len(hash_str)
      111. Help_char = Mid(hash_str , X , 1)
      112. Sha1_data_byte(y) = Asc(help_char)
      113. Z = X Mod 4
      114. If Z = 0 Then Y = Y + 8
      115. Decr Y
      116. Incr X
      117. Wend
      118. Sha1_data_byte(y) = &H80
      119. Len_word = Len(hash_str) * 8
      120. Sha1_data_byte(61) = Low(len_word)
      121. Sha1_data_byte(62) = High(len_word)
      122. Sha1_hash_1 = &H67452301
      123. Sha1_hash_2 = &HEFCDAB89
      124. Sha1_hash_3 = &H98BADCFE
      125. Sha1_hash_4 = &H10325476
      126. Sha1_hash_5 = &HC3D2E1F0
      127. For T = 0 To 79
      128. If T <= 19 Then
      129. Sha1_hash_6 = Sha1_hash_2 And Sha1_hash_3
      130. Sha1_hash_8 = Not Sha1_hash_2
      131. Sha1_hash_8 = Sha1_hash_8 And Sha1_hash_4
      132. Sha1_hash_6 = Sha1_hash_6 Or Sha1_hash_8
      133. End If
      134. If 20 <= T And T <= 39 Then
      135. Sha1_hash_6 = Sha1_hash_2 Xor Sha1_hash_3
      136. Sha1_hash_6 = Sha1_hash_6 Xor Sha1_hash_4
      137. End If
      138. If 40 <= T And T <= 59 Then
      139. Sha1_hash_6 = Sha1_hash_2 And Sha1_hash_3
      140. Sha1_hash_8 = Sha1_hash_2 And Sha1_hash_4
      141. Sha1_hash_6 = Sha1_hash_6 Or Sha1_hash_8
      142. Sha1_hash_8 = Sha1_hash_3 And Sha1_hash_4
      143. Sha1_hash_6 = Sha1_hash_6 Or Sha1_hash_8
      144. End If
      145. If 60 <= T And T <= 79 Then
      146. Sha1_hash_6 = Sha1_hash_2 Xor Sha1_hash_3
      147. Sha1_hash_6 = Sha1_hash_6 Xor Sha1_hash_4
      148. End If
      149. If T <= 15 Then
      150. Sha1_work(t + 1) = Sha1_data(t + 1)
      151. End If
      152. If 16 <= T And T <= 79 Then
      153. Sha1_hash_8 = Sha1_work(t -2) Xor Sha1_work(t -7)
      154. Sha1_hash_8 = Sha1_hash_8 Xor Sha1_work(t -13)
      155. Sha1_hash_8 = Sha1_hash_8 Xor Sha1_work(t -15)
      156. Rotate Sha1_hash_8 , Left
      157. Sha1_work(t + 1) = Sha1_hash_8
      158. End If
      159. If T <= 19 Then
      160. Sha1_hash_7 = &H5A827999
      161. End If
      162. If 20 <= T And T <= 39 Then
      163. Sha1_hash_7 = &H6ED9EBA1
      164. End If
      165. If 40 <= T And T <= 59 Then
      166. Sha1_hash_7 = &H8F1BBCDC
      167. End If
      168. If 60 <= T And T <= 79 Then
      169. Sha1_hash_7 = &HCA62C1D6
      170. End If
      171. Rotate Sha1_hash_1 , Left , 5
      172. Sha1_hash_8 = Sha1_hash_1 + Sha1_hash_6
      173. Rotate Sha1_hash_1 , Right , 5
      174. Sha1_hash_8 = Sha1_hash_8 + Sha1_work(t + 1)
      175. Sha1_hash_6 = Sha1_hash_7 + Sha1_hash_5
      176. Sha1_hash_8 = Sha1_hash_8 + Sha1_hash_6
      177. Sha1_hash_5 = Sha1_hash_4
      178. Sha1_hash_4 = Sha1_hash_3
      179. Rotate Sha1_hash_2 , Left , 30
      180. Sha1_hash_3 = Sha1_hash_2
      181. Sha1_hash_2 = Sha1_hash_1
      182. Sha1_hash_1 = Sha1_hash_8
      183. Next T
      184. Sha1_hash_1 = Sha1_hash_1 + &H67452301
      185. Sha1_hash_2 = Sha1_hash_2 + &HEFCDAB89
      186. Sha1_hash_3 = Sha1_hash_3 + &H98BADCFE
      187. Sha1_hash_4 = Sha1_hash_4 + &H10325476
      188. Sha1_hash_5 = Sha1_hash_5 + &HC3D2E1F0
      189. End Sub
      Alles anzeigen
      Code first, think later - Natural programmer :D
    • Good afternoon.

      I apologize for writing here (I did not find the topic where I previously downloaded these libraries)
      I tried to deal with your library, but so far nothing has worked out, as I understand it is for AT45DB flash drives ?

      Can you help me deal with her?


      Thank you in advance for your help.
      Dateien
    • $regfile = "m328pdef.dat"
      $crystal = 22118400
      $hwstack = 100
      $swstack = 100
      $framesize = 100
      $baud = 115200

      ....

      '-------------------------------------------------------------------------------
      ' *** SPI SETUP ***
      '-------------------------------------------------------------------------------
      DIM Pagge AS WORD ', Index_copy As Byte
      Const Use_xram = 0
      ' Config Pinb.2 = Output ' define here Pin for CS External serial Flash
      ' SPI_SS Alias PortB.2
      ' Set SPI_SS

      ' HW-SPI is configured to highest Speed
      Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
      ' Spsr = 1 ' Double speed on ATMega128
      Spiinit

      $include "ESF_DECLARATIONS.inc"

      ' Enable Interrupts

      Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1
      'Config Timer1 = Pwm , Compare B Pwm = Clear Down , Prescale = 1
      Config PORTB.1 = Output
      '*********************************************************************
      ....
      PLAYFLASH:
      FOR Pagge = 0 TO 8191
      Call Df_pagetobuffer(1 , Pagge)
      FOR NN = 0 TO 527
      N = Df_bufferreadbyte(1 , NN)
      Pwm1A = N
      Waitus 1
      NEXT NN
      NEXT Pagge
      Return
      ....
      $include "ESF_routines.inc"
      '*********************************************************************

      kann ich das falsche Unterprogramm anstelle von Df_bufferreadbyte verwenden, um dieses Df_bufferreadarray zu verwenden?

      Ich teste Ihre Bibliothek auf Daten-Flash, ich spiele eine WAV 16-kHz-Mono von einem Flash ab, aber selbst mit einer Verzögerung von 1 ns wird der Ton langsam abgespielt (ich habe den Bibliothekscode durchgesehen, es scheint, dass es keine Verzögerungen gibt irgendwo), aber mit einer anderen Bibliothek spielt es normalerweise mit einer Verzögerung von 55 ns

      und unheimliches Knistern in Dynamik :(

      und mit diesem Code wird der gleiche WAV 16khz mono normal mit einer Verzögerung von 55 ns . abgespielt

      auf der gleichen Hardware
      ....

      FOR Pagge = 0 TO 8191
      Call Page_read(Pagge)
      FOR NN = 1 TO 528
      N = Buf(NN)
      Pwm1A = N
      Waitus 55
      NEXT NN
      NEXT Pagge
      ....

      '*******************************************************************************
      '-------------------------------------------------------------------------------
      Sub Page_read(byval Page_mem As Word)
      '-------------Flash read subroutine---------------------------------------------
      'Subroutine to read a given page of memory
      'Input-------page_Mem (0-8191)
      'Output------buf(528) array 528 byte
      Reset Select_memory 'select flash ram
      N = Current_page_read 'command Current_page_read
      Call Byteout() 'out 3 bytes of adress
      Shift Page_mem , Left , 2

      A = Page_mem
      Call Wordout()
      N = 0
      Call Byteout()
      '-------------
      Call Byteout()
      Call Byteout()
      Call Byteout()
      Call Byteout()
      'transmit 32 dont care bits
      For Temp1 = 1 To 528
      Call Bytein()
      Buf(temp1) = N
      Next Temp1
      Set Select_memory
      End Sub
      '*********************************************************************

      hilf mir das herauszufinden?
    • six1 schrieb:

      Hallo Sonic,
      dann ist die Routine "Df_bufferreadbyte" zu langsam für dein Vorhaben.
      Es ist vielleicht besser, einen ganzen Block zu lesen mit Df_bufferreadarray?
      Ich werde versuchen, das Df_bufferreadarray-Array später auszulesen. Ich werde über das Ergebnis schreiben, Sie können die Frequenz von beispielsweise 16 kHz auf 11 kHz reduzieren, aber selbst bei 16 kHz ist die Klangqualität nicht sehr gut.
    • Pluto25 schrieb:

      In den Fuses: CKOPT=0 aktiviert einen "härteren" Ozillator. Auch sinnvoll wenn sein Takt noch anderes versorgen muß.
      @ Sonic wie warm wird er?
      Also habe ich den 16 MHz Quarz von Arduino Mini (Nano) fallen gelassen und auf 24,57 MHz gelötet, alles funktioniert gut, sogar Arduino ide kompiliert und funktioniert nach dem Wechsel auf 24,57 MHz)
      Dateien
      • DSCN0028.JPG

        (476,68 kB, 9 mal heruntergeladen, zuletzt: )
      • DSCN0030.JPG

        (451,14 kB, 11 mal heruntergeladen, zuletzt: )
    • Hallo six1


      Sie können einen Code schreiben, um zu sehen, wie Sie mit der Df_bufferreadarray-Prozedur richtig arbeiten, sonst kann ich nicht verschiedene Optionen ausprobieren, für die ich schlau genug war.)

      wahrscheinlich lustig übersetzt google translate , denn bevor ich den übersetzten Text sende, übersetze ich ihn (Rus -> Deutsch) und dann umgekehrt (Deutsch ins Russische), im Prinzip kann man das verstehen, aber Übersetzer sind noch lange nicht perfekt. :saint: