SHA1 HASH

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • 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 Source Code

      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
      Display All
      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.
      Files