eynstyne Posted December 11, 2006 Share Posted December 11, 2006 (edited) Hello all...I'm working on an encryption system. It sometimes works, and it sometimes doesn't. Why?The problem is, it drops letters in really large text.It uses a 231 array to carry out ascii characters. A typical example is:Key - AppleMessage - WeeEncrypted...It looks like : 靦牺簽觙錴HWhen decrypting...Any key you enter can semi-decrypt it.Here is the code for Encryption and Decryption. How can I optimise this for maximum protection? What do I need to fix?CODE#include <array.au3>#include <file.au3>#include <string.au3>#include <GUIConstants.au3>$Form1 = GUICreate("Status...", 225, 59, 266, 259, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE,$WS_EX_TOPMOST))$Label1 = GUICtrlCreateLabel("Creating Character Set...", 3, 3, 225, 17)$Progress1 = GUICtrlCreateProgress(2, 22, 222, 14)GUICtrlSetData(-1, 25)$Button1 = GUICtrlCreateButton("Cancel", 86, 39, 57, 18, 0)GUISetState(@SW_SHOW)while 1 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf $KEYWORDSET = _ArrayCreate("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u")$CHAR = _ArrayCreate("v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P")$CHAR2 = _ArrayCreate("Q","R","S","T","U","V","W","X","Y","Z","1","2","3","4","5","6","7","8","9","0","`")$CHAR3 = _ArrayCreate("~","!","@","#","$","%","^","&","*","(",")","_","+","-","=","[","]","{","}","|","\")$CHAR4 = _ArrayCreate(":",";","""","'",",",".","<",">","?","/","","","?,"?,"?,"?,"?,"?,"?,"?,"?)$CHAR5 = _ArrayCreate("?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?)$CHAR6 = _ArrayCreate("?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?)$CHAR7 = _ArrayCreate("?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?)$CHAR8 = _ArrayCreate("?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?)$CHAR9 = _ArrayCreate("?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?)$CHAR10 = _ArrayCreate("?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"","","","","","","",""," ")guictrlsetdata($Label1,"Assembling Character Set...")for $j = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIfguictrlsetdata($Label1,"Assembling Character Set..." & $j & " Characters")_ArrayAdd($KEYWORDSET,$CHAR[$j])nextguictrlsetdata($Progress1,10)for $k = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $k + $j & " Characters")_ArrayAdd($KEYWORDSET,$CHAR2[$k])next guictrlsetdata($Progress1,20)for $i = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i & " Characters")_ArrayAdd($KEYWORDSET,$CHAR3[$i])Nextguictrlsetdata($Progress1,30)for $m = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i + $m & " Characters") _ArrayAdd($KEYWORDSET,$CHAR4[$m])Nextguictrlsetdata($Progress1,40)for $n = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i + $m + $n & " Characters") _ArrayAdd($KEYWORDSET,$CHAR5[$n])Nextguictrlsetdata($Progress1,50)for $l = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i + $m + $n + $l & " Characters") _ArrayAdd($KEYWORDSET,$CHAR6[$l])Nextguictrlsetdata($Progress1,60)for $p = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i + $m + $n + $l + $p & " Characters") _ArrayAdd($KEYWORDSET,$CHAR7[$p])Nextguictrlsetdata($Progress1,70)for $o = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i + $m + $n + $l + $p + $o & " Characters") _ArrayAdd($KEYWORDSET,$CHAR8[$o])Nextguictrlsetdata($Progress1,80)for $q = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i + $m + $n + $l + $p + $o + $q & " Characters") _ArrayAdd($KEYWORDSET,$CHAR9[$q])Nextguictrlsetdata($Progress1,90)for $t = 0 to 19 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i + $m + $n + $l + $p + $o + $q + $t & " Characters") _ArrayAdd($KEYWORDSET,$CHAR10[$t])nextguictrlsetdata($Progress1,100)GUISetState(@SW_HIDE)$KEY = Inputbox("Enter a key...","Enter a key to encrypt message. A lengthy and random key is best:","","*",200,150,-1,-1)if $key = "" Then msgbox(16,"Error...","You did not enter a key!") Exit EndIf$MESSAGE = Inputbox("Enter your message","Your message. Do not include spaces.","","",200,150,-1,-1)if $message = "" Then msgbox(16,"Error...","You did not type a message") Exit EndIf_FileCreate("E:\ENCRYPT.txt");Generates the Alphabet text and mixes it aroundGUISetState(@SW_SHOW)TraySetToolTip("Sorting Alphabet set...")controlhide("Status...","",$progress1)guictrlsetdata($Label1,"Sorting Character Set...")For $i = 0 to 231$msg = Guigetmsg() if $msg = $button1 Then guictrlsetdata($Label1,"Cancelling...") Exit EndIf$MID = StringMid($KEY,$i,1)if $MID <> "" Then$Search = _ArraySearch($KEYWORDSET,$MID,0,0,1)_ArraySwap($KEYWORDSET[$search],$KEYWORDSET[$i])_ArraySort($KEYWORDSET)endifNextguictrlsetdata($Label1,"Encrypting Message...")for $i = 1 to Stringlen($MESSAGE) $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf$MID = StringMid($MESSAGE,$i,1)$Search = _ArraySearch($KEYWORDSET,$MID,0,0,1)$s = mod($search + $i,231)if $search > -1 then if $s > 0 ThenFileWrite("E:\ENCRYPT.TXT",$KEYWORDSET[$s]) ElseIf $s > 231 Then $s = 231 - $search + $i FileWrite("E:\ENCRYPT.TXT",$KEYWORDSET[$s]) EndIf EndIf TraySetToolTip("Encrypting...")NextexitloopWEnd DECRYPTION...CODE#include <array.au3>#include <file.au3>#include <string.au3>#include <GUIConstants.au3>$Form1 = GUICreate("Status...", 225, 59, 266, 259, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE,$WS_EX_TOPMOST))$Label1 = GUICtrlCreateLabel("Creating Character Set...", 3, 3, 225, 17)$Progress1 = GUICtrlCreateProgress(2, 22, 222, 14)GUICtrlSetData(-1, 25)$Button1 = GUICtrlCreateButton("Cancel", 86, 39, 57, 18, 0)GUISetState(@SW_SHOW)while 1 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf $KEYWORDSET = _ArrayCreate("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u")$CHAR = _ArrayCreate("v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P")$CHAR2 = _ArrayCreate("Q","R","S","T","U","V","W","X","Y","Z","1","2","3","4","5","6","7","8","9","0","`")$CHAR3 = _ArrayCreate("~","!","@","#","$","%","^","&","*","(",")","_","+","-","=","[","]","{","}","|","\")$CHAR4 = _ArrayCreate(":",";","""","'",",",".","<",">","?","/","","","?,"?,"?,"?,"?,"?,"?,"?,"?)$CHAR5 = _ArrayCreate("?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?)$CHAR6 = _ArrayCreate("?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?)$CHAR7 = _ArrayCreate("?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?)$CHAR8 = _ArrayCreate("?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?)$CHAR9 = _ArrayCreate("?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?)$CHAR10 = _ArrayCreate("?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"?,"","","","","","","",""," ")guictrlsetdata($Label1,"Assembling Character Set...")for $j = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIfguictrlsetdata($Label1,"Assembling Character Set..." & $j & " Characters")_ArrayAdd($KEYWORDSET,$CHAR[$j])nextguictrlsetdata($Progress1,10)for $k = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $k + $j & " Characters")_ArrayAdd($KEYWORDSET,$CHAR2[$k])next guictrlsetdata($Progress1,20)for $i = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i & " Characters")_ArrayAdd($KEYWORDSET,$CHAR3[$i])Nextguictrlsetdata($Progress1,30)for $m = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i + $m & " Characters") _ArrayAdd($KEYWORDSET,$CHAR4[$m])Nextguictrlsetdata($Progress1,40)for $n = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i + $m + $n & " Characters") _ArrayAdd($KEYWORDSET,$CHAR5[$n])Nextguictrlsetdata($Progress1,50)for $l = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i + $m + $n + $l & " Characters") _ArrayAdd($KEYWORDSET,$CHAR6[$l])Nextguictrlsetdata($Progress1,60)for $p = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i + $m + $n + $l + $p & " Characters") _ArrayAdd($KEYWORDSET,$CHAR7[$p])Nextguictrlsetdata($Progress1,70)for $o = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i + $m + $n + $l + $p + $o & " Characters") _ArrayAdd($KEYWORDSET,$CHAR8[$o])Nextguictrlsetdata($Progress1,80)for $q = 0 to 20 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i + $m + $n + $l + $p + $o + $q & " Characters") _ArrayAdd($KEYWORDSET,$CHAR9[$q])Nextguictrlsetdata($Progress1,90)for $t = 0 to 19 $msg = Guigetmsg() if $msg = $button1 Then Exit EndIf guictrlsetdata($Label1,"Assembling Character Set..." & $j + $k + $i + $m + $n + $l + $p + $o + $q + $t & " Characters") _ArrayAdd($KEYWORDSET,$CHAR10[$t])nextguictrlsetdata($Progress1,100)GUISetState(@SW_HIDE)$KEY = InputBox("Enter Key","Enter your keyword to decrypt the message:","","*",200,150,-1,-1)$open = FileOpenDialog("Open file with encrypted message...","","All Files (*.*)",1+2+4)$MESSAGE = Filereadline($open,1)if $KEY = "" thenmsgbox(16,"Error","You did not type a key!")exitEndIfif $open = "" Then msgbox(48,"Error","The file chosen is blank or does not contain any text on line 1") Exit EndIf_FileCreate("E:\DECRYPT.txt");Generates the Key Alphabet text and mixes it aroundGUISetState(@SW_SHOW)TraySetToolTip("Sorting Alphabet set...")controlhide("Status...","",$progress1)guictrlsetdata($Label1,"Sorting Character Set...")For $i = 0 to 231 $msg = Guigetmsg() if $msg = $button1 Then guictrlsetdata($Label1,"Cancelling...") Exit EndIf$MID = StringMid($KEY,$i,1)if $MID <> "" Then$Search = _ArraySearch($KEYWORDSET,$MID,0,0,1)_ArraySwap($KEYWORDSET[$i],$KEYWORDSET[$search])_ArraySort($KEYWORDSET)endifNext;Matches Encryption Alphabetguictrlsetdata($Label1,"Decrypting Message...")for $i = 1 to Stringlen($MESSAGE)$MID = StringMid($MESSAGE,$i,1)$Search = _ArraySearch($KEYWORDSET,$MID,0,0,1)if $i > $search Then msgbox(0,"",$search) $SEARCHy = _ArraySearch($KEYWORDSET,"y",0,0,1) msgbox(0,"y",$SEARCHy) FileWrite("E:\DECRYPT.TXT",$KEYWORDSET[$s]) Else$s = mod($search - $i,231)EndIfif $search <> @error Then FileWrite("E:\DECRYPT.TXT",$KEYWORDSET[$s])ElseIf $s > 231 Then FileWrite("E:\DECRYPT.TXT",$KEYWORDSET[231 - $s]) Elseif $i > $search Then msgbox(0,"",$search) msgbox(0,"",$s) $s = $search + $i FileWrite("E:\DECRYPT.TXT",$KEYWORDSET[$s]) EndIf TraySetToolTip("Decrypting...") Next ExitLoop wend Edited December 11, 2006 by eynstyne F@m!ly Guy Fr33k! - Avatar speaks for itself__________________________________________________________________________________________ite quotes... - Is your refrigerator running? If it is, It probably runs like you...very homosexually - Christians don't believe in gravity - Geeze Brian where do you think you are, Payless?- Show me potato Salad!__________________________________________________________________________________________Programs available - Shutdown timer[indent][/indent] Link to comment Share on other sites More sharing options...
lod3n Posted December 11, 2006 Share Posted December 11, 2006 No offence, but what's wrong with the included _StringEncrypt function? Regardless, I wouldn't use character sets outside of A-Z, 0-9 for encryption. If you REALLY want to do something fancy like that, why not use a 5 character string ranging from "[000]" through "[231]"? Or something like that... [font="Fixedsys"][list][*]All of my AutoIt Example Scripts[*]http://saneasylum.com[/list][/font] Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now