Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: как зашифровать данные? Добавлено: 13.07.08 15:42  

Автор вопроса:  Андрей | Web-сайт: vstu.ucoz.ru/ | ICQ: 353336595 
мне любым способом нужно зашифровать данные... юникодом, или MD5, единственный вопрос в реализации этого процесса.
а дело вот в чем: нужно много .txt файлов залить на сервер, и зашифровать, чтобы они были не доступны для свободного чтения, а читались только моей программой. так же желателен выбор шифрования с максимальной скоростью(время имеет значение), и в файле может быть до 2000 строк, столбцов не больше 30...

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #1 Добавлено: 13.07.08 17:25
С помощью юникода можно только выполнить кодирование строки в массив байтов и это не является шифрования
MD5 - это хеширование, процес необратимый.

    Sub Encrypt()
        ' Ключ шифрования
        '(тебе нужно сгенерировать для себя свой ключ длинной 32 байта.
        Dim Key() As Byte = {167, 229, 22, 130, 127, 9, 141, 37, 207, 56, 197, 200, 54, 35, 249, 17, 194, 81, 122, 39, 122, 153, 10, 18, 43, 85, 161, 82, 146, 102, 59, 204}

        Dim Rijndael As New System.Security.Cryptography.RijndaelManaged
        Rijndael.Key = Key
        Rijndael.GenerateIV()

        Const BufSize As Integer = 1024 * 64
        Using Source = New IO.FileStream("C:\1.html", FileMode.Open, FileAccess.Read)
            Using Destination = New IO.FileStream("c:\1.enc", FileMode.Create, FileAccess.Write)
                ;Destination.Write(Rijndael.IV, 0, Rijndael.IV.Length)
                Using CS = New System.Security.Cryptography.CryptoStream(Destination, Rijndael.CreateEncryptor, Security.Cryptography.CryptoStreamMode.Write)
                    Dim Length As Integer
                    Dim Buffer(BufSize - 1) As Byte
                    Do
                        Length = Source.Read(Buffer, 0, BufSize)
                        CS.Write(Buffer, 0, Length)
                    Loop While Length = BufSize
                End Using
            End Using
        End Using
    End Sub

    Sub Decrypt()
        ' Ключ шифрования
        '(тебе нужно сгенерировать для себя свой ключ длинной 32 байта.
        Dim Key() As Byte = {167, 229, 22, 130, 127, 9, 141, 37, 207, 56, 197, 200, 54, 35, 249, 17, 194, 81, 122, 39, 122, 153, 10, 18, 43, 85, 161, 82, 146, 102, 59, 204}

        ' Реализация алгоритма AES
        Dim Rijndael As New System.Security.Cryptography.RijndaelManaged
        Rijndael.Key = Key

        Const BufSize As Integer = 1024 * 64
        Using Source = New IO.FileStream("c:\1.enc", FileMode.Open, FileAccess.Read)
            Dim IV(Rijndael.IV.Length - 1) As Byte
            Source.Read(IV, 0, Rijndael.IV.Length)
            Rijndael.IV = IV

            Using Destination = New IO.FileStream("c:\out.html", FileMode.Create, FileAccess.Write)
                Using CS = New System.Security.Cryptography.CryptoStream(Destination, Rijndael.CreateDecryptor, Security.Cryptography.CryptoStreamMode.Write)
                    Dim Length As Integer
                    Dim Buffer(BufSize - 1) As Byte
                    Do
                        Length = Source.Read(Buffer, 0, BufSize)
                        CS.Write(Buffer, 0, Length)
                    Loop While Length = BufSize
                End Using
            End Using
        End Using
    End Sub


Если что непонятно - спрашивай

Ответить

Номер ответа: 2
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 13.07.08 17:35
же желателен выбор шифрования с максимальной скоростью(время имеет значение), и в файле может быть до 2000 строк, столбцов не больше 30...

Не беспокойся - наверное процентов 90 времени будет идти чтения файла с диска и запись шифрованых данных обратно на диск, шифрование тут никакого тормоза не добавит :)

Ответить

Номер ответа: 3
Автор ответа:
 Андрей



ICQ: 353336595 

Вопросов: 11
Ответов: 16
 Web-сайт: vstu.ucoz.ru/
 Профиль | | #3
Добавлено: 13.07.08 20:00
товарищ, а этот код точно под VB6.0? тут с синтаксисом проблемы. или, может, объявить еще что-то надо?

Ответить

Номер ответа: 4
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 13.07.08 20:12
Нет, это точно не под VB 6.0. Это под VB .NET.

Под VB6 нужно использовать CryptoAPI, примеров у меня нет к сожалению.

Поищи в инете примеры по RIJNDAEL/AES

Ответить

Номер ответа: 5
Автор ответа:
 Андрей



ICQ: 353336595 

Вопросов: 11
Ответов: 16
 Web-сайт: vstu.ucoz.ru/
 Профиль | | #5
Добавлено: 13.07.08 20:24
мда... а я уже прям навострился вбивать эти процедуры в свою программу))) спасибо и на этом)))
так, а может с юникодом проще будет?

Ответить

Номер ответа: 6
Автор ответа:
 gvozd



Разработчик Offline Client

Вопросов: 164
Ответов: 1317


 Web-сайт: www.gvozdsoft.com
 Профиль | | #6
Добавлено: 13.07.08 20:34
Steel Brand, может расскажешь товарищу у методе пана __Pavel__? Может эта разработка найдет своих поклонников уже сейчас?

Ответить

Номер ответа: 7
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #7
Добавлено: 13.07.08 23:32
на скорую руку можно и так:
Private Function Encrypt(text As String, key As String) As String
Dim t As String, t2 As String, i As Long, j As Long, c() As String, done As Boolean
t = "": done = False
ReDim c(Len(key) - 1)
For i = 0 To UBound(c)
    c(i) = Mid(key, i + 1, 1)
Next i
For i = 0 To UBound(c) - 1
    For j = i + 1 To UBound(c)
        If c(i) = c(j) Then
            MsgBox "wrong key"
            Encrypt = ""
            Exit Function
        End If
    Next j
Next i
For i = 1 To Len(text)
    t2 = Mid(text, i, 1)
    For j = 0 To UBound(c)
        If c(j) = t2 Then
            If j <> UBound(c) Then
                t = t + c(j + 1)
            Else
                t = t + c(0)
            End If
            done = True
        End If
    Next j
    If Not done Then t = t + t2
    done = False
Next i
Encrypt = t
End Function

Private Function Decrypt(text As String, key As String) As String
Dim t As String, t2 As String, i As Long, j As Long, c() As String, done As Boolean
t = "": done = False
ReDim c(Len(key) - 1)
For i = 0 To UBound(c)
    c(i) = Mid(key, i + 1, 1)
Next i
For i = 0 To UBound(c) - 1
    For j = i + 1 To UBound(c)
        If c(i) = c(j) Then
            MsgBox "wrong key"
            ;Decrypt = ""
            Exit Function
        End If
    Next j
Next i
For i = 1 To Len(text)
    t2 = Mid(text, i, 1)
    For j = 0 To UBound(c)
        If c(j) = t2 Then
            If j <> 0 Then
                t = t + c(j - 1)
            Else
                t = t + c(UBound(c))
            End If
            done = True
        End If
    Next j
    If Not done Then t = t + t2
    done = False
Next i
Decrypt = t
End Function

Ответить

Номер ответа: 8
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #8
Добавлено: 13.07.08 23:35
ЗЫ
В ключе не должно быть повторяющихся символов

Ответить

Номер ответа: 9
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #9 Добавлено: 14.07.08 02:14
Кстати, AES - это не алгоритм, а стандарт. Алгоритм обеспечивающий этот стандарт, как раз RIJNDAEL.

2 Андрей
Ты искать то сам пробовал, перед тем как задать вопрос на форуме? Напиши в любой поисковик, например "VB6 RIJNDAEL", или "VB6 DES"...

Ответить

Номер ответа: 10
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #10 Добавлено: 14.07.08 04:00
Steel Brand, может расскажешь товарищу у методе пана __Pavel__? Может эта разработка найдет своих поклонников уже сейчас?

Я думаю использование кода пана __Pavel__ будет эффективно только на суперкомпьютерах NASA

на скорую руку можно и так:
... поскипано ...

не советую так делать, безопасность этого метода под большим вопросом.

Кстати, AES - это не алгоритм, а стандарт. Алгоритм обеспечивающий этот стандарт, как раз RIJNDAEL

Согласен

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам