Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 | 3 |

 

  Вопрос: Шифратор текста по ключу Добавлено: 29.04.06 02:06  

Автор вопроса:  ZXC
Как сделать шифратор текста по ключу, т.е вводиш ключь анпример 123456 и текст ( текставой файл) шифруеться, а чтобы дешифровать надо ввести ключ и если он правельный то текст расшифроовываеться а если нет то нет :) или выдаёться другой :) заранее введённый, желательно исходничек :) или примерчик...по ключу нигде нивидал, или подскажите как алгоритмы применять, всем спасибо!

Ответить

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

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



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #1
Добавлено: 29.04.06 14:47
Imports System.Security
Imports System.Security.Cryptography

        Dim face_crypter As ICryptoTransform ' интерфейс криптования
        face_crypter = (New RijndaelManaged).CreateEncryptor(arrKey, arrIV)

Потом можно загонять в файл, передавать по сетке (в общем, любые операции посредством Stream).
Ещё у этой хрени есть метод TransformFinalBlock, но я ним как-то не успел разобраться...
        Dim strm_base As New IO.MemoryStream         Dim strm_crypter As CryptoStream

Не забывай FlushFinalBlock

Ответить

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



Вопросов: 30
Ответов: 106
 Профиль | | #2 Добавлено: 29.04.06 15:07
Непонял :) поподробней можно?

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 29.04.06 15:40
vb.kiev.ua - тут смотрел?

Ответить

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



Вопросов: 30
Ответов: 106
 Профиль | | #4 Добавлено: 29.04.06 15:42
Нет, щас гляну

Ответить

Номер ответа: 5
Автор ответа:
 ZXC



Вопросов: 30
Ответов: 106
 Профиль | | #5 Добавлено: 29.04.06 15:43
сайт не пашет :)

Ответить

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



Вопросов: 30
Ответов: 106
 Профиль | | #6 Добавлено: 29.04.06 15:43
во...а так пашет www.vb.kiev.ua

Ответить

Номер ответа: 7
Автор ответа:
 ZXC



Вопросов: 30
Ответов: 106
 Профиль | | #7 Добавлено: 29.04.06 15:46
Да тут ВСЁ под VB6 :( а не .NET примера нет?

Ответить

Номер ответа: 8
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #8
Добавлено: 29.04.06 16:16
Ну лан, лови кривой пример, как такое можно сделать, но потом не говори, что я тя предупреждал:

Imports System.Security
Imports System.Security.Cryptography
Imports System.Text

Public Class frmHead

    Private Sub btnCrypt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCrypt.Click
        If txtSource.Text.Length = 0 Then
            MsgBox("Введите текст!", MsgBoxStyle.Exclamation)
            Exit Sub
        End If
        txtCode.Text = PASS_Crypt(txtSource.Text, "Мой ключ", "Мой вектор";)
    End Sub

    Private Sub btnDeCrypt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeCrypt.Click
        If txtCode.Text.Length = 0 Then
            MsgBox("Требуется материал для расшифровки!", MsgBoxStyle.Exclamation)
            Exit Sub
        End If
        Try
            txtResult.Text = PASS_DeCrypt(txtCode.Text, "Мой ключ", "Мой вектор";)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

    Private Function PASS_Crypt(ByVal strToCrypt As String, ByVal strKey As String, ByVal strInitVector As String) As String
        Dim arrKey, arrIV As Byte() ' массивы ключа и вектора
        If strKey.Length > 16 Or strInitVector.Length > 16 Then
            Return Nothing ' ключ или вектор имеет слишком большую длину
        End If

        ' загоняем ключи в массивы
        arrKey = Encoding.Default.GetBytes(strKey)
        arrIV = Encoding.Default.GetBytes(strInitVector)

        ' дополняем массивы нулями
        ReDim Preserve arrKey(15)
        ReDim Preserve arrIV(15)

        Dim face_crypter As ICryptoTransform ' интерфейс криптования
        face_crypter = (New RijndaelManaged).CreateEncryptor(arrKey, arrIV)

        'Dim bbIn, bbOut As Byte()
        'bbIn = Encoding.Default.GetBytes(strToCrypt)
        ''ReDim bbOut(2550)
        'bbOut = face_crypter.TransformFinalBlock(bbIn, 0, bbIn.Length) ', bbOut, 1)

        'Dim rez As String = Encoding.Default.GetString(bbOut, 0, bbOut.Length) ' face_crypter.OutputBlockSize)

        Dim strm_base As New IO.MemoryStream ' меморёвый поток
        Dim strm_crypter As CryptoStream ' поток-посредник, использующий объект face_crypter, чтобы писать в strm_base

        strm_crypter = New CryptoStream(strm_base, face_crypter, CryptoStreamMode.Write)

        ' пишем в поток шифровку
        Dim writer As New IO.StreamWriter(strm_crypter)
        writer.Write(strToCrypt)
        writer.Flush()

        ' даём возможность face_crypter дописать в конец шифровки всё, что надо для расшифровывания
        strm_crypter.FlushFinalBlock()

        ' достаём
        Dim rez As String = Encoding.Default.GetString(strm_base.GetBuffer, 0, CInt(strm_base.Length))

        ' даём установку на разложение
        writer.Dispose()
        face_crypter.Dispose()
        Return rez
    End Function
    Private Function PASS_DeCrypt(ByVal strToDeCrypt As String, ByVal strKey As String, ByVal strInitVector As String) As String
        Dim arrKey, arrIV As Byte() ' массивы ключа и вектора
        If strKey.Length > 16 Or strInitVector.Length > 16 Then
            Return Nothing ' ключ или вектор имеет слишком большую длину
        End If

        ' загоняем ключи в массивы
        arrKey = Encoding.Default.GetBytes(strKey)
        arrIV = Encoding.Default.GetBytes(strInitVector)

        ' дополняем массивы нулями
        ReDim Preserve arrKey(15)
        ReDim Preserve arrIV(15)

        Dim strm_base As New IO.MemoryStream ' меморёвый поток

        ' не откладывая, пишем в наш поток то, что надо расшифровать
        strm_base.Write(Encoding.Default.GetBytes(strToDeCrypt), 0, strToDeCrypt.Length)

        ' устанавливаем место чтения на начало потока, чтобы потом не читать пустоту
        strm_base.Seek(0, IO.SeekOrigin.Begin)

        Dim face_decrypt As ICryptoTransform ' расшифровщик
        face_decrypt = (New RijndaelManaged).CreateDecryptor(arrKey, arrIV)

        Dim strm_decrypter As CryptoStream ' посредник расшифровки

        strm_decrypter = New CryptoStream(strm_base, face_decrypt, CryptoStreamMode.Read)

        ' создаём объект reader, который упрощает чтение из потока
        Dim reader As New IO.StreamReader(strm_decrypter)

        Dim rez As String = reader.ReadToEnd

        ' чистимся
        reader.Dispose()
        face_decrypt.Dispose()

        Return rez
    End Function
End Class


Лучше бы ты всё-таки сделал по-нормальному и закинул пример сюда - для народного пользования...

Ответить

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



Вопросов: 30
Ответов: 106
 Профиль | | #9 Добавлено: 29.04.06 16:38
Посматрел, тока тут плохо шифруеться без ключа :( надо думать как добавить в пример ключ...не у кого идей нет?

Ответить

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



Вопросов: 30
Ответов: 106
 Профиль | | #10 Добавлено: 29.04.06 16:40
а стоп, всё ястно :)

Ответить

Номер ответа: 11
Автор ответа:
 ZXC



Вопросов: 30
Ответов: 106
 Профиль | | #11 Добавлено: 29.04.06 17:14
Всё сделал но при шифрование файла с русскими буквами НЕ РАБОТАЕТ декриптор..что делать? у меня уже был глюк что ВБ.NET не записывает в файл русские буквы..помогите

Ответить

Номер ответа: 12
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #12
Добавлено: 29.04.06 17:35
Сдаётся мне ошибка где-то в районе Encoding.Default - от этого надо отпрыгивать. В текущих проектах я это учитываю.

Ну, в общем, я тебя предупреждал. :)

Ответить

Номер ответа: 13
Автор ответа:
 ZXC



Вопросов: 30
Ответов: 106
 Профиль | | #13 Добавлено: 29.04.06 23:59
:(( сделал шифратор текста НО шифрует файл с русскими буквами но не расшифровывает! вот код

Using myFileStream As New IO.FileStream(opd.FileName, IO.FileMode.Create)
            Dim myStreamWriter As New IO.StreamWriter(myFileStream)
            sfiledecrypt = PASS_DeCrypt(filedecrypt, txtkey2.Text, txtkey2.Text)
            myStreamWriter.Write(sfiledecrypt)
            myStreamWriter.Close()
        End Using


opd - OpenFileDialog
ну а остальное это стандарт, вообщем, кто знает как русский текст дешифровывать? самое интерестное что пример который выше шифрует русские символы, значит проблема или в открытии файла или ещё в чёмто..помогите плз...

Ответить

Номер ответа: 14
Автор ответа:
 ZXC



Вопросов: 30
Ответов: 106
 Профиль | | #14 Добавлено: 30.04.06 00:01
это дешифровка!

Ответить

Номер ответа: 15
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #15
Добавлено: 30.04.06 00:33
Мля, ну вот знал же, что не надо давать сырой код.
А ты не пробовал вникать, а не просто ctrl+C > ctrl+V?
Dim myStreamWriter As New IO.StreamWriter(myFileStream)
sfiledecrypt = PASS_DeCrypt(filedecrypt, txtkey2.Text, txtkey2.Text)

Меня эти сроки вообще убили - получается, что ты внутрь функций даже не заглянул!
Я сделал через Ж..., но ты меня переплюнул!

http://www.neco.user.kz/garbage/it_work.PNG

у меня уже был глюк что ВБ.NET не записывает в файл русские буквы..помогите

Эту багу мелкомягкие специально вшили в VB.Net (на C# подобное не знамечено), в связи с повышенной активностью российских хакеров, чтобы пресечь написание вирусов под Windows Vista.

Ответить

Страница: 1 | 2 | 3 |

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



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