Форум программистов, компьютерный форум, киберфорум
Наши страницы
mozgotron
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Набросок к новому десятичному хеш-алгоритму

Запись от mozgotron размещена 08.04.2018 в 23:36

Никудышная функция:

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
    Function Hashing4(strT As String) As String
        codes = 0
        index1 = 0
        index2 = 1234567899876543210
        Dim B() As Char = strT
        For Each bs As Char In B
            index1 = AscW(bs) * 1000000000000000 + index2 \ 10
            index2 = index2 Xor index1
        Next
        codes = (index2 Mod 10000000000) Xor (index2 \ 10000000000)
        strA = codes.ToString.PadLeft(10, "0"c)
        Return strA
    End Function
А вот так нааамного лучше:

vb.net
1
2
3
4
5
6
7
8
9
10
11
    Function hashgen(ByVal strT As String) As String
        i = 1
        c = 123456789
        Dim B() As Char = strT
        For Each bs As Char In B
            c = (c * AscW(bs) + i) Mod 10000000000
            i += 1
        Next
        s = Strings.Right(c.ToString.PadLeft(10, "0"c), 10)
        Return s
    End Function
Полная версия кода во втором комменте сверху.
Размещено в Без категории
Просмотров 432 Комментарии 6
Всего комментариев 6
Комментарии
  1. Старый комментарий
    Аватар для mozgotron

    Исправленная функция десятичного хеширования

    vb.net
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    Imports System.Text.Encoding
    Imports System.Text.StringBuilder
    Imports System.Environment
     
    Public Class Form1
        Dim codes As UInt64
        Dim index1 As UInt64
        Dim index2 As UInt64
        Dim strind As String
        Dim strT As String
     
        Private Sub RichTextBox1_TextChanged1(ByVal sender As Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
            strT = RichTextBox1.Text
            hashgen(strT)
            TextBox2.AppendText(strind & NewLine)
        End Sub
     
        Function hashgen(ByVal strT As String) As String
            codes = 0
            index1 = 0
            index2 = 1234567899876543210
            Dim B() As Char = strT
            For Each bs As Char In B
                index1 = AscW(bs) * 1000000000000000 + index2 \ 10
                index2 = index2 Xor index1
            Next
            codes = ((index2 \ 10000000000) + 10000000000) - (index2 Mod 10000000000)
            strind = Strings.Right(codes.ToString.PadLeft(10, "0"c), 10)
            Return strind
        End Function
     
    End Class
    Запись от mozgotron размещена 09.04.2018 в 11:31 mozgotron вне форума
  2. Старый комментарий
    Аватар для mozgotron
    Новая версия функции десятичного хеширования (CODES10-hash)

    vb.net
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    Imports System.Text.Encoding
    Imports System.Text.StringBuilder
    Imports System.Environment
     
    Public Class Form1
        Dim c As Long
        Dim i As Long
        Dim s As String
        Dim t As String
     
        Private Sub RichTextBox1_TextChanged1(ByVal sender As Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
            t = RichTextBox1.Text
            hashgen(t)
            TextBox1.AppendText(s & NewLine)
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            t = RichTextBox1.Text
            hashgen(t)
            TextBox1.AppendText(s & NewLine)
        End Sub
     
        Function hashgen(ByVal t As String) As String
           i = 1
            c = 123456789
            Dim B() As Char = t
            For Each bs As Char In B
                c = (c * AscW(bs) + i) Mod 10000000000
                i += 1
            Next
            s = Strings.Right(c.ToString.PadLeft(10, "0"c), 10)
            Return s
        End Function
     
    End Class
    Запись от mozgotron размещена 22.05.2018 в 11:39 mozgotron вне форума
  3. Старый комментарий
    Аватар для Avazart
    Почему сразу не редактировать запись блога? Зачем постить в комменты?
    Запись от Avazart размещена 22.05.2018 в 11:54 Avazart вне форума
  4. Старый комментарий
    Аватар для Orlangur1991
    Разве не должен массив строится из передаваемой строки?
    vb.net
    1
    
    Dim B() As Char = strT
    И можно сократить вызов функции
    vb.net
    1
    
    TextBox1.Text &= hashgen(RichTextBox1.Text) & NewLine
    Запись от Orlangur1991 размещена 22.05.2018 в 13:30 Orlangur1991 вне форума
    Обновил(-а) Orlangur1991 22.05.2018 в 18:53
  5. Старый комментарий
    Аватар для mozgotron
    Orlangur1991, исправил
    Dim B() As Char = strT.

    Avazart, учту на следующий раз.
    Запись от mozgotron размещена 22.05.2018 в 23:25 mozgotron вне форума
  6. Старый комментарий
    Аватар для mozgotron
    Avazart, знаете почему я пощу новые версии кода, оставляя старые. Чтобы эта страница в моём блоге наглядно показывала, что именно я являюсь разработчиком этого кода. То есть, чтобы в случае чего не было проблем с доказыванием моих авторских прав на этот алгоритм.
    Запись от mozgotron размещена 22.05.2018 в 23:29 mozgotron вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru