Мир программирования на Visual BASIC 5.0 и HTML
Мой сайт
  главная
  архив
  Memo Ver. 1.2.2
  WIN com 95
  Проекты

Спонсоры
  Городской кот
  Subscribe.Ru   Russian Surf

Ссылки
  VB Streets
  Visual BASIC
  SnoozeX Design

О подписке
  Статистика
  Подписаться


Рассылка 'Мир программирования на Visual BASIC 5.0 и HTML.'

мы в режиме:

Рускоязычный спосор автора рассылки: Напоминаем, что Вы будете получать 10% от дохода каждого привлеченного Вами пользователя. Кроме того, каждый привлеченный Вами пользователь может привлечь для Вас по 3 пользователя второго уровня от которых Вы будете получать по 3% от их дохода. Самый выгодный русский спонсор (причем русскоязычный). Платит за время проведённое вами в сети. При накоплении 300 руб. отсылается по почте чек на ваш адрес Действуют реферал программы. Очень простая форма регистрации. (Очень рекомендую). Регистрация по ссылке.    @LEXis
Несколько слов от автора: Привет программистам! На сегодняшний день читателей рассылки составляет 28 человек. Я закрываю раздел "ИСТОРИК", т.к. всем он уже порядком надоел. Свои вопросы по программированию отправляйте мне на E-Mail.    @LEXis

30.09.2000 Выпуск N4 Обзор ведет @LEXis

Сегодня в выпуске:


В разделе полезные коды VB: Как зашифровать пароль или другой текст.



Полезные коды VB


Как зашифровать пароль или другой текст


Класс Cipher шифрует и дешифрует текст по очень простому алгоритму логической операции Xor, выполняемой над байтами строки и последовательности псевдослучайных чисел. В качестве ключа можно использовать любую строку, а каждый уникальный ключ дает шифр.

Подготовте проект, добавив в него форму и класс CIPHER. На форму поместите:
- 2 текстовых поля, txtClearText (содержит исходный, открытый текст), txtKeyString (ключевая строка)
- 2 метки, lblEncryptedText (зашифрованный вариант текста), lblDecryptedText (после расшифровки текст)
- 2 кнопки, cmdEncrypt (зашифровать текст), cmdDecrypt (расшифровать текст)

Добавте в форму:
Option Explicit

Private Sub cmdEncrypt_Click()
    Dim cipherTest As New Cipher
    cipherTest.KeyString = txtKeyString.Text
    cipherTest.Text = txtClearText.Text
    cipherTest.DoXor
    cipherTest.Stretch
    lblEncryptedText.Caption = cipherTest.Text
End Sub

Private Sub cmdDecrypt_Click()
    Dim cipherTest As New Cipher
    cipherTest.KeyString = txtKeyString.Text
    cipherTest.Text = lblEncryptedText.Caption
    cipherTest.Shrink
    cipherTest.DoXor
    lblDecryptedText.Caption = cipherTest.Text
End Sub

Поместите в класс CIPHER:
'CIPHER.CLS
Option Explicit

Private msKeyString As String
Private msText As String

'~~~.KeyString
'A string (key) used in encryption and decryption
Public Property Let KeyString(sKeyString As String)
    msKeyString = sKeyString
    Initialize
End Property

'~~~.Text
'Write text to be encrypted or decrypted
Public Property Let Text(sText As String)
    msText = sText
End Property

'Read text that was encrypted or decrypted 
Public Property Get Text() As String
    Text = msText
End Property

'~~~.DoXor
'Exclusive-or method to encrypt or decrypt
Public Sub DoXor()
    Dim nC As Integer
    Dim nB As Integer
    Dim lI As Long
    For lI = 1 To Len(msText)
        nC = Asc(Mid(msText, lI, 1))
        nB = Int(Rnd * 256)
        Mid(msText, lI, 1) = Chr(nC Xor nB)
    Next lI
End Sub

'~~~.Stretch
'Convert any string to a printable, displayable string
Public Sub Stretch()
    Dim nC As Integer
    Dim lI As Long
    Dim lJ As Long
    Dim nK As Integer
    Dim lA As Long
    Dim sB As String
    lA = Len(msText)
    sB = Space(lA + (lA + 2) \ 3)
    For lI = 1 To lA
        nC = Asc(Mid(msText, lI, 1))
        lJ = lJ + 1
        Mid(sB, lJ, 1) = Chr((nC And 63) + 59)
        Select Case lI Mod 3
        Case 1
            nK = nK Or ((nC \ 64) * 16)
        Case 2
            nK = nK Or ((nC \ 64) * 4)
        Case 0
            nK = nK Or (nC \ 64)
            lJ = lJ + 1
            Mid(sB, lJ, 1) = Chr(nK + 59)
            nK = 0
        End Select
    Next lI
    If lA Mod 3 Then
        lJ = lJ + 1
        Mid(sB, lJ, 1) = Chr(nK + 59)
    End If
    msText = sB
End Sub

'~~~.Shrink
'Inverse of the Stretch method;
'result can contain any of the 256-byte values
Public Sub Shrink()
    Dim nC As Integer
    Dim nD As Integer
    Dim nE As Integer
    Dim lA As Long
    Dim lB As Long
    Dim lI As Long
    Dim lJ As Long
    Dim lK As Long
    Dim sB As String
    lA = Len(msText)
    lB = lA - 1 - (lA - 1) \ 4
    sB = Space(lB)
    For lI = 1 To lB
        lJ = lJ + 1
        nC = Asc(Mid(msText, lJ, 1)) - 59
        Select Case lI Mod 3
        Case 1
            lK = lK + 4
            If lK > lA Then lK = lA
            nE = Asc(Mid(msText, lK, 1)) - 59
            nD = ((nE \ 16) And 3) * 64
        Case 2
            nD = ((nE \ 4) And 3) * 64
        Case 0
            nD = (nE And 3) * 64
            lJ = lJ + 1
        End Select
        Mid(sB, lI, 1) = Chr(nC Or nD)
    Next lI
    msText = sB
End Sub

'Initializes random numbers using the key string
Private Sub Initialize()
    Dim nI As Integer
    Randomize Rnd(-1)
    For nI = 1 To Len(msKeyString)
        Randomize Rnd(-Rnd * Asc(Mid(msKeyString, nI, 1)))
    Next nI
End Sub

Спасибо за внимание. Ваш @LEXis

Программы разработанные автором на VB 6.0

Show PASS Ver. 1.1
Ломает пароли зашифрованные звездочкой! Круче опенпасса. Обновлен код.
только для программистов с установленным Vsual BASIC не ниже версии 5.0 (инсталляционные версии программы можно скачать у меня на сайте).

Источник: SnoozeX Design

Код моей кнопки
<!-- SnoozeX Design "PLAY" -->
<a href="http://snoozex.boom.ru" TARGET="_blank"><BR><IMG SRC="http://snoozex.boom.ru/new.gif" WIDTH=88 HEIGHT=31 BORDER=1 ALT="SnoozeX Design"></a>
<!-- SnoozeX Design "END" -->

Copyright © 2000 @LEXis
Design by SnoozeX Design
@LEXis WEB SITE
Email : snoozex@mail.ru
ICQ uin : 14912636
Подписаться на рассылку Кувалина Алексея
Мир программирования на Visual BASIC и HTML

 

Home ] Up ] О группе ] Статьи ] Исходники ] Орфография ] Приёмы ] Проекты ]

Хостинг от uCoz