Что нового

Шифруем данные под пароль

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Версия AutoIt:3.

Описание: Данный пример предназначен для шифрования
данных и создания базы с данными.
Как работает: функция записывает в файл
зашифрованные данные с применением ключа,
предварительно проверив файл на существование
этого ключа,если ключ существует то функция
не записывает значение в файл и выводит результат "0"
если же файл не содержит введённого вами ключа то
записывает ваше значение в следующую строчку файла.
Так же есть функция для вывода значения из файла по его
ключу,достаточно указать файл,ключ и ваш пароль и
функция замены значения в выбранном ключе.

Пример:
Код:
#include <String.au3>

$Data = "Текст (от лат. textus «ткань; сплетение, связь, сочетание») — в общем особо полная последовательность знаков." & @Crlf & _
"Существуют две основных трактовки понятия «текст»: «имманентная» (расширенная, философски нагруженная) и «репрезентативная» "& @Crlf & _
"(более частная). Имманентный подход подразумевает отношение к тексту как к автономной реальности, нацеленность на выявление "& @Crlf & _
"его внутренней структуры. Репрезентативный — рассмотрение текста как особой формы представления знаний о внешней тексту действительности."& @Crlf & _
"В лингвистике термин текст используется в широком значении, включая и образцы устной речи. Восприятие текста изучается в "& @Crlf & _
"рамках лингвистики текста и психолингвистики. Так, например, И.Р. Гальперин определяет текст следующим образом: "& @Crlf & _
"это письменное сообщение, объективированное в виде письменного документа, состоящее из ряда высказываний, объединённых разными типами "& @Crlf & _
"лексической, грамматической и логической связи, имеющее определённый моральных характер, прагматическую установку и соответственно литературно обработанное."

$Write = __Base_WriteKey("base.auf","AutoIt.Script",$Data,12345)
;If $Write = 0 Then MsgBox(0,"Ошибка","Данный ключ уже существует в базе данных")

;__Base_ReplaceKey("base.auf","AutoIt.Script","Замененная строка",12345)

$Read = __Base_ReadKey("base.auf","AutoIt.Script",12345)
MsgBox(0,'Значение',$Read)


; #FUNCTION# ====================================================================================================================
; Name...........: __Base_WriteKey
; Description....: Writes a value.
; Syntax.........: __Base_WriteKey($wBase,$wKey,$wValue,$wPassw)
; Parameters.....: $wBase  - Name of a file of base.
;                  $wKey   - The key name.
;                  $wValue - Value.
;                  $wPassw - Password.
;
; Return values..: If the key exists that value does not register, 
;                  if there is no that registers the next line
; Author.........: Sergey2210
; Modified.......:
; Remarks........: 
; Related........:
; Link...........: http://autoit-script.ru/index.php?action=profile
; Example........: Yes
; ===============================================================================================================================
Func __Base_WriteKey($wBase,$wKey,$wValue,$wPassw)
    
        Global $__Base_wResult
    
        $__Base_wOpen = FileOpen($wBase)
        $__Base_wReadKey = FileRead($__Base_wOpen)
        $__Exists_wCode = _HexToString(_StringEncrypt(1,StringToBinary($wKey),$wPassw))
        If StringInStr ($__Base_wReadKey,$__Exists_wCode) = 1 Then
            $__Base_wResult = 0
        Else
        If StringInStr ($__Base_wReadKey,$__Exists_wCode) = 0 Then  
            $__Base_wData = _HexToString(_StringEncrypt(1,StringToBinary($wKey & ": " & $wValue),$wPassw))
            FileWriteLine($wBase,$__Base_wData) 
            $__Base_wResult = 1         
        EndIf
	    EndIf
	
        FileClose($__Base_wOpen)
		
        Return $__Base_wResult
        
EndFunc 

; #FUNCTION# ====================================================================================================================
; Name...........: __Base_ReadKey
; Description....: Read a value.
; Syntax.........: __Base_ReadKey($rBase,$rKey,$rPassw)
; Parameters.....: $rBase  - Name of a file of base.
;                  $rKey   - The key name.
;                  $rPassw - Password.
;
; Return values..: 
; Author.........: Sergey2210
; Modified.......:
; Remarks........: 
; Related........:
; Link...........: http://autoit-script.ru/index.php?action=profile
; Example........: Yes
; ===============================================================================================================================
Func __Base_ReadKey($rBase,$rKey,$rPassw)
    
        Global $__Base_rResult
    
        $__Base_rOpen = FileOpen($rBase)
        $__Base_rReadKey = FileRead($__Base_rOpen)
        $__Exists_rCode = _HexToString(_StringEncrypt(1,StringToBinary($rKey),$rPassw))
        
        $__Base_rLine = StringSplit($__Base_rReadKey, @CRLF, 1)
        For $i = 1 To $__Base_rLine[0] Step +1
            If StringInStr($__Base_rLine[$i], $__Exists_rCode)=1 Then
                $__Base_rEncode = BinaryToString(_StringEncrypt(0,_StringToHex($__Base_rLine[$i]),$rPassw))
                $__Base_rLen = StringLen($rKey)
                $__Base_rValue = StringTrimLeft($__Base_rEncode,$__Base_rLen+2)
                $__Base_rResult = $__Base_rValue
            EndIf
        Next        
        
        FileClose($__Base_rOpen)
		
        Return $__Base_rResult
        
EndFunc 
 
; #FUNCTION# ====================================================================================================================
; Name...........: __Base_ReplaceKey
; Description....: Replace a value.
; Syntax.........: __Base_ReplaceKey($vBase,$vKey,$vNewValue,$vPassw)
; Parameters.....: $vBase     - Name of a file of base.
;                  $vKey      - The key name.
;                  $vNewValue - New value
;                  $vPassw    - Password.
;
; Return values..: Sucess     - 1
; Author.........: Sergey2210
; Modified.......:
; Remarks........: 
; Related........:
; Link...........: http://autoit-script.ru/index.php?action=profile
; Example........: Yes
; ===============================================================================================================================
 Func __Base_ReplaceKey($vBase,$vKey,$vNewValue,$vPassw)

        Global $__Base_vResult

        $__Base_vOpen = FileOpen($vBase)
        $__Base_vReadKey = FileRead($__Base_vOpen)
        $__Exists_Code = _HexToString(_StringEncrypt(1,StringToBinary($vKey),$vPassw))
        $__Replace_Code = _HexToString(_StringEncrypt(1,StringToBinary($vKey & ": " & $vNewValue),$vPassw))
		FileClose($__Base_vOpen)
		
        $__Base_vLine = StringSplit($__Base_vReadKey, @CRLF, 1)
        For $i = 1 To $__Base_vLine[0] Step +1
            If StringInStr($__Base_vLine[$i], $__Exists_Code)=1 Then
		        $__Base_vKey = StringReplace($__Base_vReadKey,$__Base_vLine[$i],$__Replace_Code) 
		        $__BaseReplace_vFile = FileOpen($vBase,2) 
		        FileWrite($__BaseReplace_vFile,$__Base_vKey) 
		        FileClose($__BaseReplace_vFile)		
                $__Base_vResult = 1				
            EndIf
        Next  
		
        Return $__Base_vResult

EndFunc

Обновление:
Добавлена функция замены значения в ключе
__Base_ReplaceKey()
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Не сложно, но хорошо - мне нравится :smile:

Имхо, было бы здорово, что если я записываю в один и тот же ключ второй раз, он заменялся на новый :smile:
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Не вопрос, можно попробывать сделать, просто я так написал,если вдруг ты уже записал какое то значение например с ключём "Password" и это важно, и в дальнейшем опять записываешь значение с таким же ключём - тот теряется, а этот записывается, какаято функция вылетает работающая с первым значением.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Sergey2210
После запятой принято ставить пробел, постарайся этому придерживаться.
 
Верх