<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Шифрование текстовых файлов]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8428&amp;type=atom" />
	<updated>2013-07-17T12:21:16Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=8428</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73836#p73836" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Кстати Ваш прогрессбар криво у меня работает.</p></blockquote></div><p>Проверьте на этом:<br /></p><div class="codebox"><pre><code>
SetBatchLines -1
ExtList = txt,ahk,ini,bat,htm ; допустимые расширения
Global Table := &quot;а&quot; A_Space &quot;бвгдеёжзийклмнопрстуфхцчшщъыьэюя&quot;
            . &quot;А&quot; A_Tab &quot;БВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ&quot;
            . &quot;abcdefghijklmnopqrstuvwxyz&quot;
            . &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;
            . &quot;&#039;-!&quot;&quot;#$&amp;()*,./:`;?@[_\]|^``{}~+&lt;=&gt;№`%`r`n&quot;
            . &quot;1234567890&quot;, MI := 163, PIN, R
; ----------------------------------------------------
Gui, Add, Edit, x5 w150 vPIN Number, 3345
Gui, Add, Edit, xs y+5 wp R1 vCripting ReadOnly, Перетащите сюда файлы...
Gui, Add, Progress, xs y+5 wp h8 Range1-100 vMyProgress
Gui, Add, Checkbox, xs vAddTime Checked1, Добавить время
Gui, Add, Checkbox, xs vNoExt, Скрыть расширение
Gui, Add, Checkbox, xs vSaveNewFolder, Сохранять в новую папку
Gui, Add, Button, xs y+5 w74 gCript v0, Cript
Gui, Add, Button, x+5 w74 gDeCript v1, DeCript
Gui, +ToolWindow +AlwaysOnTop
Gui, Show, w160, Шифрование
Return
; ----------------------------------------------------
GuiDropFiles:
If A_GuiControl &lt;&gt; Cripting ; проверка контрола
    Return
nFiles := FileList := &quot;&quot; 
Loop, parse, A_GuiControlEvent, `n
    {
    SplitPath, A_LoopField, FileName, Dir, Extension, NameNoExt ; получить данные пути файла
    nFiles += 1 ; подсчет количества файлов
    If Extension   ; проверка расширений файлов
        If Extension not in %ExtList% ; проверка расширений файлов
            {
            MsgBox, 262192, Ошибка!, Только %ExtList%!
            Return
            }
    }
FileList := A_GuiControlEvent ; сохранить список файлов
GuiControl,, MyProgress
GuiControl,, %A_GuiControl%, % nFiles = 1 ? FileName : &quot;Выбрано файлов: &quot; nFiles ; %
Return
; ----------------------------------------------------
Cript:
DeCript:
Gui, Submit, NoHide
If SaveNewFolder + AddTime = 0
    {
    MsgBox, 262192, Ошибка!, Выберите минимум один вариант имён файлов`nили сохранение в папку %FolderToSave%!
    Return
    }
If FileList =
    {
    MsgBox, 262192, Ошибка!, Выберите один или несколько файлов!
    Return
    }    
if RegExMatch(PIN, &quot;.*\D.*&quot;) = 1 ; проверка введенного кода
    {
    MsgBox, 262192, Ошибка!, Введите цифровой код!
    Return
    }
K := 0
Loop, parse, FileList, `n  ; подсчет количества символов в файлах
    {
    FileRead, Text, %A_LoopField%
    K += StrLen(Text)
    }
R := K // 99
If SaveNewFolder = 1 ; сохранять ли в папку
    {
    IfNotExist, Dir &quot;\&quot; A_GuiControl ; проверка папки
        FileCreateDir, %Dir%\%A_GuiControl% ; создать папку 
    Dir := Dir &quot;\&quot; A_GuiControl ; присвоить путь
    }
FormatTime, Time, A_Now, HH_mm_ss
; ----------------------------------------------------
Loop, parse, FileList, `n ; чтение списка файла
    { 
    Modified = ; очистка строки 
    SplitPath, A_LoopField, , , Extension, NameNoExt ; получить расширение файла
    NameNoExt := AddTime = 1 ? Time &quot;_&quot; NameNoExt : NameNoExt ; добавить время   
    Name := NoExt = 0 ? NameNoExt &quot;.&quot; Extension    : NameNoExt ; скрыть расширение   
    FileRead, text, %A_LoopField% 
    FileAppend, % Cript(text, A_GuiControl), % Dir &quot;\&quot; Name ; Сохранение файла  
    }
FileList = ; очистка списка файлов
Return
; ----------------------------------------------------
Cript(text, mode) { 
    C := A := 1
    StringSplit, P, PIN ; сплит ключа 
    Loop, parse, text
        {
        i := InStr(Table, A_LoopField, 1) ; поиск позиции символа в Table
        P := P%C% ; очередной символ ключа
        C := ++C &gt; P0 ? 1 : C ; проверка длины ключа
        iR := mode ? i - P : i + P ; шифруем или дешифруем
        iR := iR &lt; 1 ? MI + iR : iR &gt; MI ? iR - MI : iR ; позиция замещающего символа
        Res .= i = 0 ? A_LoopField : SubStr(Table, iR, 1) ; присвоить замещающий символ  
        If !Mod(A_Index, R)
            {
            GuiControl,, MyProgress, %A%    ; изменяем прогрессбар
            GuiControl,, Cripting, % A++ &quot;%&quot;    ; % изменяем поле  
            }
        }  
    GuiControl,, Cripting, 100`% 
    GuiControl,, MyProgress, 100
    Return Res
}
</code></pre></div><p>В таблицу добавил переводы строк.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-07-17T12:21:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73836#p73836</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73796#p73796" />
			<content type="html"><![CDATA[<p>+ Отключение визуализации прогресса (для более быстрого де/шифрования)<br />+ Показ итогового времени выполнения</p><div class="codebox"><pre><code>SetBatchLines -1
ExtList = txt,ahk,ini,bat,htm ; допустимые расширения
Global Table := &quot;а&quot; A_Space &quot;бвгдеёжзийклмнопрстуфхцчшщъыьэюя&quot;
            . &quot;А&quot; A_Tab &quot;БВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ&quot;
            . &quot;abcdefghijklmnopqrstuvwxyz&quot;
            . &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;
            . &quot;&#039;-!&quot;&quot;#$&amp;()*,./:`;?@[_\]|^``{}~+&lt;=&gt;№`%&quot;
            . &quot;1234567890&quot;, MI := 163, A, K, PIN, Visyal           
; ----------------------------------------------------
Gui, Add, Edit, x5 w150 vPIN Number, Введите цифровой код
Gui, Add, Edit, xs y+5 wp R1 vCripting ReadOnly, Перетащите сюда файлы...
Gui, Add, Progress, xs y+5 wp h8 Range1-100 vMyProgress
Gui, Add, Checkbox, xs vVisyal Checked1, Визуализация
Gui, Add, Checkbox, xs vAddTime Checked1, Добавить время
Gui, Add, Checkbox, xs vNoExt, Скрыть расширение
Gui, Add, Checkbox, xs vSaveNewFolder, Сохранять в новую папку
Gui, Add, Button, xs y+5 w74 gCript v0, Cript
Gui, Add, Button, x+5 w74 gDeCript v1, DeCript
Gui, +ToolWindow +AlwaysOnTop
Gui, Show, w160, Шифрование
Return
; ----------------------------------------------------
GuiDropFiles:
If A_GuiControl &lt;&gt; Cripting ; проверка контрола
    Return
nFiles = 
FileList = 
Loop, parse, A_GuiControlEvent, `n
    {
    SplitPath, A_LoopField, FileName, Dir, Extension, NameNoExt ; получить данные пути файла
    nFiles += 1 ; подсчет количества файлов
    If Extension   ; проверка расширений файлов
        If Extension not in %ExtList% ; проверка расширений файлов
            {
            MsgBox, 262192, Ошибка!, Только %ExtList%!
            Return
            }
    }
FileList := A_GuiControlEvent ; сохранить список файлов
GuiControl,, MyProgress
GuiControl,, %A_GuiControl%, % nFiles = 1 ? FileName : &quot;Выбрано файлов: &quot; nFiles ; %
Return
; ----------------------------------------------------
Cript:
DeCript:
Gui, Submit, NoHide
If SaveNewFolder + AddTime = 0
    {
    MsgBox, 262192, Ошибка!, Выберите минимум один вариант имён файлов`nили сохранение в папку %FolderToSave%!
    Return
    }
If FileList =
    {
    MsgBox, 262192, Ошибка!, Выберите один или несколько файлов!
    Return
    }    
if RegExMatch(PIN, &quot;.*\D.*&quot;) = 1 ; проверка введенного кода
    {
    MsgBox, 262192, Ошибка!, Введите цифровой код!
    Return
    }
StartTime := A_TickCount
A := K := 0
Loop, parse, FileList, `n  ; подсчет количества символов в файлах
    {
    FileRead, Text, %A_LoopField%
    K += StrLen(Text)
    }
Range = 0-%K%
GuiControl, +Range%Range%, MyProgress ; изменить размерность прогрессбара    
If SaveNewFolder = 1 ; сохранять ли в папку
    {
    IfNotExist, Dir &quot;\&quot; A_GuiControl ; проверка папки
        FileCreateDir, %Dir%\%A_GuiControl% ; создать папку 
    Dir := Dir &quot;\&quot; A_GuiControl ; присвоить путь
    }
FormatTime, Time, A_Now, HH_mm_ss
; ----------------------------------------------------
Loop, parse, FileList, `n ; чтение списка файла
    { 
    Modified = ; очистка строки 
    SplitPath, A_LoopField, , , Extension, NameNoExt ; получить расширение файла
    NameNoExt := AddTime = 1 ? Time &quot;_&quot; NameNoExt : NameNoExt ; добавить время   
    Name := NoExt = 0 ? NameNoExt &quot;.&quot; Extension    : NameNoExt ; скрыть расширение   
       FileRead, text, %A_LoopField%
    FileAppend, % Cript(text, A_GuiControl), % Dir &quot;\&quot; Name ; Сохранение файла 
    }
FileList = ; очистка списка файлов
; ----------------------------------------------------    
tm1 := (A_TickCount - StartTime)/1000
tm2 := Floor(tm1)
StringMid, ms, tm1, StrLen(tm2) + 2, 3
GuiControl, , Cripting, % &quot;Выполнено за &quot; FormatSeconds(Tm2) &quot;&#039;&quot; ms
Return
; ----------------------------------------------------
Cript(text, mode) { 
    C := 1
    StringSplit, P, PIN ; сплит ключа
    Loop, parse, text
        {
        If Visyal 
            {
            GuiControl,, MyProgress, % A++ ; изменяем прогрессбар
            GuiControl, , Cripting, % Floor(A*100/K)&quot;%&quot; ; % изменяем поле (округляем до ближайшего целого числа в меньшую сторону)
            }
        i := InStr(Table, A_LoopField, 1) ; поиск позиции символа в Table
        P := P%C% ; очередной символ ключа
        C := ++C &gt; P0 ? 1 : C ; проверка длины ключа
        iR := mode ? i - P : i + P ; шифруем или дешифруем
        iR := iR &lt; 1 ? MI + i - P : iR &gt; MI ? i + P - MI : iR ; позиция замещающего символа
        Res .= i = 0 ? A_LoopField : SubStr(Table, iR, 1) ; присвоить замещающий символ
        }
    Return Res
}
; ----------------------------------------------------
FormatSeconds(NumberOfSeconds)
    {
    time = 19990101  ; Полночь произвольной даты.
    time += %NumberOfSeconds%, seconds
    FormatTime, mmss, %time%, mm:ss
    return NumberOfSeconds//3600 &quot;:&quot; mmss
    }
GuiClose:
ExitApp</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Zohann]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26234</uri>
			</author>
			<updated>2013-07-15T11:50:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73796#p73796</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73685#p73685" />
			<content type="html"><![CDATA[<p><a href="http://forum.script-coding.com/viewtopic.php?pid=53615#p53615">Тут нужно как можно меньше взаимодействовать с GUI</a> <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Миллион символов и миллион раз дёргать гуи не айс.<br /></p><div class="quotebox"><blockquote><p>Кстати я его (прогрессбар) первый раз сделал, просто давно хотел попробовать.</p></blockquote></div><p>Может будет стимулом для переделки моего варианта.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-07-12T11:50:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73685#p73685</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73673#p73673" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>И всё таки очень сильно.</p></blockquote></div><p>Ну кто ж спорит. Кстати я его (прогрессбар) первый раз сделал, просто давно хотел попробовать. Провести расчет и кол-во данных, и чтобы точнехонько на 100% заканчивался. Вроде получилось. Так что можно оставить его как пример.<br />Кстати Ваш прогрессбар криво у меня работает.</p>]]></content>
			<author>
				<name><![CDATA[Zohann]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26234</uri>
			</author>
			<updated>2013-07-12T08:39:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73673#p73673</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73649#p73649" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Ещё есть мнение что GuiControl очень сильно тормозит процесс.</p></blockquote></div><p>И всё таки очень сильно. Этот вариант работает минимум в 10 раз быстрее без ущерба для наглядности прогресса:</p><div class="codebox"><pre><code>
SetBatchLines -1
ExtList = txt,ahk,ini,bat,htm ; допустимые расширения
Global Table := &quot;а&quot; A_Space &quot;бвгдеёжзийклмнопрстуфхцчшщъыьэюя&quot;
            . &quot;А&quot; A_Tab &quot;БВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ&quot;
            . &quot;abcdefghijklmnopqrstuvwxyz&quot;
            . &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;
            . &quot;&#039;-!&quot;&quot;#$&amp;()*,./:`;?@[_\]|^``{}~+&lt;=&gt;№`%&quot;
            . &quot;1234567890&quot;, MI := 163, PIN, R
; ----------------------------------------------------
Gui, Add, Edit, x5 w150 vPIN Number, Введите цифровой код
Gui, Add, Edit, xs y+5 wp R1 vCripting ReadOnly, Перетащите сюда файлы...
Gui, Add, Progress, xs y+5 wp h8 Range1-100 vMyProgress
Gui, Add, Checkbox, xs vAddTime Checked1, Добавить время
Gui, Add, Checkbox, xs vNoExt, Скрыть расширение
Gui, Add, Checkbox, xs vSaveNewFolder, Сохранять в новую папку
Gui, Add, Button, xs y+5 w74 gCript v0, Cript
Gui, Add, Button, x+5 w74 gDeCript v1, DeCript
Gui, +ToolWindow +AlwaysOnTop
Gui, Show, w160, Шифрование
Return
; ----------------------------------------------------
GuiDropFiles:
If A_GuiControl &lt;&gt; Cripting ; проверка контрола
    Return
nFiles = 
FileList = 
Loop, parse, A_GuiControlEvent, `n
    {
    SplitPath, A_LoopField, FileName, Dir, Extension, NameNoExt ; получить данные пути файла
    nFiles += 1 ; подсчет количества файлов
    If Extension   ; проверка расширений файлов
        If Extension not in %ExtList% ; проверка расширений файлов
            {
            MsgBox, 262192, Ошибка!, Только %ExtList%!
            Return
            }
    }
FileList := A_GuiControlEvent ; сохранить список файлов
GuiControl,, MyProgress
GuiControl,, %A_GuiControl%, % nFiles = 1 ? FileName : &quot;Выбрано файлов: &quot; nFiles ; %
Return
; ----------------------------------------------------
Cript:
DeCript:
Gui, Submit, NoHide
If SaveNewFolder + AddTime = 0
    {
    MsgBox, 262192, Ошибка!, Выберите минимум один вариант имён файлов`nили сохранение в папку %FolderToSave%!
    Return
    }
If FileList =
    {
    MsgBox, 262192, Ошибка!, Выберите один или несколько файлов!
    Return
    }    
if RegExMatch(PIN, &quot;.*\D.*&quot;) = 1 ; проверка введенного кода
    {
    MsgBox, 262192, Ошибка!, Введите цифровой код!
    Return
    }
K := 0
Loop, parse, FileList, `n  ; подсчет количества символов в файлах
    {
    FileRead, Text, %A_LoopField%
    K += StrLen(Text)
    }
R := K // 100
If SaveNewFolder = 1 ; сохранять ли в папку
    {
    IfNotExist, Dir &quot;\&quot; A_GuiControl ; проверка папки
        FileCreateDir, %Dir%\%A_GuiControl% ; создать папку 
    Dir := Dir &quot;\&quot; A_GuiControl ; присвоить путь
    }
FormatTime, Time, A_Now, HH_mm_ss
; ----------------------------------------------------
Loop, parse, FileList, `n ; чтение списка файла
    { 
    Modified = ; очистка строки 
    SplitPath, A_LoopField, , , Extension, NameNoExt ; получить расширение файла
    NameNoExt := AddTime = 1 ? Time &quot;_&quot; NameNoExt : NameNoExt ; добавить время   
    Name := NoExt = 0 ? NameNoExt &quot;.&quot; Extension    : NameNoExt ; скрыть расширение   
    FileRead, text, %A_LoopField% 
    FileAppend, % Cript(text, A_GuiControl), % Dir &quot;\&quot; Name ; Сохранение файла  
    }
FileList = ; очистка списка файлов
Return
; ----------------------------------------------------
Cript(text, mode) { 
    C := A := 1
    StringSplit, P, PIN ; сплит ключа 
    Loop, parse, text
        {
        i := InStr(Table, A_LoopField, 1) ; поиск позиции символа в Table
        P := P%C% ; очередной символ ключа
        C := ++C &gt; P0 ? 1 : C ; проверка длины ключа
        iR := mode ? i - P : i + P ; шифруем или дешифруем
        iR := iR &lt; 1 ? MI + iR : iR &gt; MI ? iR - MI : iR ; позиция замещающего символа
        Res .= i = 0 ? A_LoopField : SubStr(Table, iR, 1) ; присвоить замещающий символ  
        If !Mod(A_Index, R)
            {
            GuiControl,, Cripting, % A++ &quot;%&quot;    ; % изменяем поле  
            GuiControl,, MyProgress, %A%    ; изменяем прогрессбар
            }
        }  
    GuiControl,, Cripting, 100`% 
    Return Res
}
</code></pre></div><p>Если считать что Range1-100 это вполне достаточно.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-07-11T10:13:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73649#p73649</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73485#p73485" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>А тут разве не посерьезнее будет?</p></blockquote></div><p>Мы ж тут не письками меряемся. А делимся знаниями, чтобы их и прирастало.</p>]]></content>
			<author>
				<name><![CDATA[Zohann]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26234</uri>
			</author>
			<updated>2013-07-04T14:44:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73485#p73485</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73475#p73475" />
			<content type="html"><![CDATA[<p><strong>Malcev</strong><br />Вы понимаете. Александр_, он чертовски талантлив. <br />А нам надо мыслить в силу своих знаний...<br />Мужчина - программист. <br />А мы с вами - дилетанты. <br />Вы возьмётесь объяснить его алгоритм?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-07-04T12:22:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73475#p73475</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73472#p73472" />
			<content type="html"><![CDATA[<p>А тут разве не посерьезнее будет?<br /><a href="http://forum.script-coding.com/viewtopic.php?pid=69769#p69769">http://forum.script-coding.com/viewtopi … 769#p69769</a></p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2013-07-04T12:13:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73472#p73472</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73466#p73466" />
			<content type="html"><![CDATA[<p>Думаю получился отличный скрипт для шифрования, и многие могут теперь им воспользоватся.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-07-04T11:24:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73466#p73466</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73402#p73402" />
			<content type="html"><![CDATA[<p>Замена считывания строк на чтение файла<br />Очистка списка файлов после де/шифрования<br />Создание папки выведено из цикла чтения файлов<br />PIN как глобальная переменная<br />Добавлено SetBatchLines -1<br />Исправлен подсчет кол-ва символов в файлах<br /></p><div class="codebox"><pre><code>SetBatchLines -1
ExtList = txt,ahk,ini,bat,htm ; допустимые расширения
Global A, K, PIN
Global Table := &quot;а&quot; A_Space &quot;бвгдеёжзийклмнопрстуфхцчшщъыьэюя&quot;
            . &quot;А&quot; A_Tab &quot;БВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ&quot;
            . &quot;abcdefghijklmnopqrstuvwxyz&quot;
            . &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;
            . &quot;&#039;-!&quot;&quot;#$&amp;()*,./:`;?@[_\]|^``{}~+&lt;=&gt;№`%&quot;
            . &quot;1234567890&quot;, MI := 163            
; ----------------------------------------------------
Gui, Add, Edit, x5 w150 vPIN Number, Введите цифровой код
Gui, Add, Edit, xs y+5 wp R1 vCripting ReadOnly, Перетащите сюда файлы...
Gui, Add, Progress, xs y+5 wp h8 Range1-100 vMyProgress
Gui, Add, Checkbox, xs vAddTime Checked1, Добавить время
Gui, Add, Checkbox, xs vNoExt, Скрыть расширение
Gui, Add, Checkbox, xs vSaveNewFolder, Сохранять в новую папку
Gui, Add, Button, xs y+5 w74 gCript v0, Cript
Gui, Add, Button, x+5 w74 gDeCript v1, DeCript
Gui, +ToolWindow +AlwaysOnTop
Gui, Show, w160, Шифрование
Return
; ----------------------------------------------------
GuiDropFiles:
If A_GuiControl &lt;&gt; Cripting ; проверка контрола
    Return
nFiles = 
FileList = 
Loop, parse, A_GuiControlEvent, `n
    {
    SplitPath, A_LoopField, FileName, Dir, Extension, NameNoExt ; получить данные пути файла
    nFiles += 1 ; подсчет количества файлов
    If Extension   ; проверка расширений файлов
        If Extension not in %ExtList% ; проверка расширений файлов
            {
            MsgBox, 262192, Ошибка!, Только %ExtList%!
            Return
            }
    }
FileList := A_GuiControlEvent ; сохранить список файлов
GuiControl,, MyProgress
GuiControl,, %A_GuiControl%, % nFiles = 1 ? FileName : &quot;Выбрано файлов: &quot; nFiles ; %
Return
; ----------------------------------------------------
Cript:
DeCript:
Gui, Submit, NoHide
If SaveNewFolder + AddTime = 0
    {
    MsgBox, 262192, Ошибка!, Выберите минимум один вариант имён файлов`nили сохранение в папку %FolderToSave%!
    Return
    }
If FileList =
    {
    MsgBox, 262192, Ошибка!, Выберите один или несколько файлов!
    Return
    }    
if RegExMatch(PIN, &quot;.*\D.*&quot;) = 1 ; проверка введенного кода
    {
    MsgBox, 262192, Ошибка!, Введите цифровой код!
    Return
    }
A := K := 0
Loop, parse, FileList, `n  ; подсчет количества символов в файлах
    {
    FileRead, Text, %A_LoopField%
    K += StrLen(Text)
    }
Range = 0-%K%
GuiControl, +Range%Range%, MyProgress ; изменить размерность прогрессбара    
If SaveNewFolder = 1 ; сохранять ли в папку
    {
    IfNotExist, Dir &quot;\&quot; A_GuiControl ; проверка папки
        FileCreateDir, %Dir%\%A_GuiControl% ; создать папку 
    Dir := Dir &quot;\&quot; A_GuiControl ; присвоить путь
    }
FormatTime, Time, A_Now, HH_mm_ss
; ----------------------------------------------------
Loop, parse, FileList, `n ; чтение списка файла
    { 
    Modified = ; очистка строки 
    SplitPath, A_LoopField, , , Extension, NameNoExt ; получить расширение файла
    NameNoExt := AddTime = 1 ? Time &quot;_&quot; NameNoExt : NameNoExt ; добавить время   
    Name := NoExt = 0 ? NameNoExt &quot;.&quot; Extension    : NameNoExt ; скрыть расширение   
       FileRead, text, %A_LoopField%
    Modified := Cript(text, A_GuiControl, 1)
    FileAppend, % Modified, % Dir &quot;\&quot; Name ; Сохранение файла  
    }
FileList = ; очистка списка файлов
Return
; ----------------------------------------------------
Cript(text, mode, C) { 
    StringSplit, P, PIN ; сплит ключа
    Loop, parse, text
        {
        A += 1 ; подсчет обработанных символов            
        GuiControl,, MyProgress, %A% ; изменяем прогрессбар
        GuiControl, , Cripting, % Floor(A*100/K)&quot;%&quot; ; % изменяем поле (округляем до ближайшего целого числа в меньшую сторону)
        i := InStr(Table, A_LoopField, 1) ; поиск позиции символа в Table
        P := P%C% ; очередной символ ключа
        C := ++C &gt; P0 ? 1 : C ; проверка длины ключа
        iR := mode ? i - P : i + P ; шифруем или дешифруем
        iR := iR &lt; 1 ? MI + i - P : iR &gt; MI ? i + P - MI : iR ; позиция замещающего символа
        Res .= i = 0 ? A_LoopField : SubStr(Table, iR, 1) ; присвоить замещающий символ
        }
    Return Res
}
GuiClose:
ExitApp</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Zohann]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26234</uri>
			</author>
			<updated>2013-07-01T11:50:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73402#p73402</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73397#p73397" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Ещё есть мнение что GuiControl очень сильно тормозит процесс.</p></blockquote></div><p>Каждая строчка кода тормозит процесс, давайте оставим прогрессбар как есть</p>]]></content>
			<author>
				<name><![CDATA[Zohann]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26234</uri>
			</author>
			<updated>2013-07-01T07:15:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73397#p73397</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73396#p73396" />
			<content type="html"><![CDATA[<p>Ещё есть мнение что GuiControl очень сильно тормозит процесс.<br /></p><div class="codebox"><pre><code>
Cript(text, PIN, mode, C) { 
    StringSplit, P, PIN ; сплит ключа
    Loop, parse, text
        {
        A += 1 ; подсчет обработанных символов 
        i := InStr(Table, A_LoopField, 1) ; поиск позиции символа в Table
        P := P%C% ; очередной символ ключа
        C := ++C &gt; P0 ? 1 : C ; проверка длины ключа
        iR := mode ? i - P : i + P ; шифруем или дешифруем
        iR := iR &lt; 1 ? MI + i - P : iR &gt; MI ? i + P - MI : iR ; позиция замещающего символа
        Res .= i = 0 ? A_LoopField : SubStr(Table, iR, 1) ; присвоить замещающий символ
        }           
        GuiControl,, MyProgress, %A% ; изменяем прогрессбар
        GuiControl, , Cripting, % Floor(A*100/K)&quot;%&quot; ; % изменяем поле (округляем до ближайшего целого числа в меньшую сторону)
    Return Res
}
</code></pre></div><p>или на каждом сотом символе его применять.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-07-01T06:52:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73396#p73396</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73395#p73395" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Думаю для лаконичности кода, и недобавления переноса последней строки можно и FileRead пользовать.</p></blockquote></div><p>Согласен<br /></p><div class="quotebox"><blockquote><p>Кстати почему недобавили SetBatchLines -1? 2155 против 5565 без SetBatchLines.</p></blockquote></div><p>Да как то не думал, надо добавить, согласен.</p>]]></content>
			<author>
				<name><![CDATA[Zohann]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26234</uri>
			</author>
			<updated>2013-07-01T06:35:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73395#p73395</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73394#p73394" />
			<content type="html"><![CDATA[<p>Как ни странно 2155 против 2105 с Loop, read. Думаю для лаконичности кода, и недобавления переноса последней строки можно и FileRead пользовать.</p><p>Кстати почему недобавили SetBatchLines -1? 2155 против 5565 без SetBatchLines.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-07-01T06:11:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73394#p73394</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Шифрование текстовых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=73393#p73393" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>А что пробовать:</p></blockquote></div><p>Результат в секундах в обоих вариантах</p>]]></content>
			<author>
				<name><![CDATA[Zohann]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26234</uri>
			</author>
			<updated>2013-07-01T05:57:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=73393#p73393</id>
		</entry>
</feed>
