| FrontBack |
| | Ce l'ho fatta! Converte testo e file. Funziona così: c'è questo algoritmo che dal codice ASCII di ogni carattere riesce a criptarlo, grazie a una chiave pubblica casuale generata alla criptazione. Senza di essa non si può decriptare il testo. Per trasmettere dei dati criptati si deve comunicarla al destinatario. BUG NOTI: -Per scegliere il file di destinazione è necessario aggiungerci anche l'estensione indicata per funzionare (i file criptati vanno con estensione .fbenc, quelli decriptati con l'estensione indicata nel menù a tendina) Ecco, sono due file, vanno con questo nome: Algorythm.au3CODICE #include <String.au3> #include <Array.au3>
; Algoritmo
Func _SAEncrypt($sText) $arr = StringToASCIIArray($sText) $str = _ArrayToString($arr) $spl = StringSplit($str, "|") $a = Number(Random(10, 99, 1)) $p = Number($a*2*($a^2+($a*2)^2)) $rev = Number(_StringReverse($a)) $v = Number((($p/$a*$rev)^2)/$p) $ret = "" For $i = 1 To $spl[0] Step 1 $exp = Number($v*$p*Number($spl[$i])) If $i = $spl[0] Then $sep = "" Else $sep = " " EndIf $ret &= Number($exp/(10*($a^2)))&$sep Next $array = $ret&"|"&$p Return StringSplit($array, "|") EndFunc
Func _SADecrypt($sText, $sPubKey) $a = _RealRoot(Number($sPubKey/10), 3) $spl = StringSplit($sText, " ") $ret = "" For $i2 = 1 To $spl[0] Step 1 $vpx = Number($spl[$i2]*(10*($a^2))) $rev = Number(_StringReverse($a)) $v = Number((($sPubKey/$a*$rev)^2)/$sPubKey) $vp = Number($v*$sPubKey) $x = Number($vpx/$vp) $ret &= Chr(Round($x)) Next Return $ret EndFunc
; #INDEX# ======================================================================================================================== ; Title .........: Math root ; AutoIt Version : 3.3.0.0 / 3.3.1.1 ; Language ......: English ; Description ...: Deals with the nth root, including negative numbers. ; Author(s) .....: MDiesel ; ================================================================================================================================
; #FUNCTION# ===================================================================================================================== ; Name...........: _RealRoot ; Description ...: Finds the real nth root of a number, including negatives. ; Syntax.........: _RealRoot($fNum, $nExp = 3) ; Parameters ....: $fNum - The Number ; $nExp - The root. ; Return values .: On Success: = Returns the result. ; On Failure: = Sets @Error and returns 0, which can be a valid responce, so check @Error first. ; @ERROR: = 0 = No error. ; 1 - Result is an imaginay number ; Author ........: MDiesel ; Remarks .......: ; Example .......: ConsoleWrite("Normal = " & -27^(1/3) & @CRLF & "_RealRoot = " & _RealRoot(-27, 3)) ; ================================================================================================================================
Func _RealRoot($fNum, $nExp = 3) Local $bNeg = False, $fRet = 0 If $nExp < 0 Then Return SetError (1, 0, $fNum)
If $fNum < 0 Then ; is negative If Mod($nExp, 2) Then ; nExp is odd, so negative IS possible. $bNeg = True $fNum *= -1 Else Return SetError(1, 0, $fNum & "i") ; Imaginary number. EndIf EndIf
$fRet = $fNum ^ (1 / $nExp) If $bNeg Then $fRet *= -1 Return $fRet EndFunc ; ==> _RealRoot Main.au3CODICE ; ################# ; # FBEncrypter # ; # By FrontBack # ; #################
#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <TabConstants.au3> #include <WindowsConstants.au3> #include <File.au3> #include "Algorythm.au3"
Dim $szDrive, $szDir, $szFName, $szExt
$Form1 = GUICreate("FBEncrypter", 684, 487, 192, 124) $Tab1 = GUICtrlCreateTab(8, 32, 673, 449) GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT) $TabSheet1 = GUICtrlCreateTabItem("Testo") $Label4 = GUICtrlCreateLabel("Testo da decriptare:", 362, 65, 99, 17) $Edit2 = GUICtrlCreateEdit("", 466, 65, 201, 161) $Label5 = GUICtrlCreateLabel("Chiave pubblica:", 378, 233, 83, 17) $Input2 = GUICtrlCreateInput("", 466, 231, 201, 21) $Edit3 = GUICtrlCreateEdit("", 465, 260, 201, 161, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_HSCROLL,$WS_VSCROLL)) $Label6 = GUICtrlCreateLabel("Testo decriptato:", 377, 260, 84, 17) $Edit1 = GUICtrlCreateEdit("", 124, 67, 201, 161) $Label2 = GUICtrlCreateLabel("Chiave pubblica:", 36, 235, 83, 17) $Edit4 = GUICtrlCreateEdit("", 123, 262, 201, 161, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_HSCROLL,$WS_VSCROLL)) $Label3 = GUICtrlCreateLabel("Testo criptato:", 45, 262, 72, 17) $Input1 = GUICtrlCreateInput("", 124, 233, 201, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY)) GUICtrlSetTip(-1, "Comunica questo codice al destinatario e faglielo inserire nell'apposito campo per decriptare il testo.") $Label7 = GUICtrlCreateLabel("Testo da criptare:", 30, 67, 87, 17) $Button1 = GUICtrlCreateButton("Cripta!", 16, 448, 75, 25, $WS_GROUP) $Button2 = GUICtrlCreateButton("Decripta!", 597, 448, 75, 25, $WS_GROUP) $TabSheet2 = GUICtrlCreateTabItem("File") $Label8 = GUICtrlCreateLabel("File da criptare:", 24, 64, 76, 17) $Input3 = GUICtrlCreateInput("", 104, 62, 185, 21) $Button3 = GUICtrlCreateButton("Sfoglia...", 296, 60, 75, 25, $WS_GROUP) $Label9 = GUICtrlCreateLabel("Chiave pubblica:", 16, 90, 83, 17) $Input4 = GUICtrlCreateInput("", 104, 88, 185, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY)) GUICtrlSetTip(-1, "Comunica questo codice al destinatario e faglielo inserire nell'apposito campo per decriptare il testo.") $Label10 = GUICtrlCreateLabel("Destinazione file:", 16, 115, 84, 17) $Input5 = GUICtrlCreateInput("", 104, 113, 185, 21) $Button4 = GUICtrlCreateButton("Sfoglia...", 296, 110, 75, 25, $WS_GROUP) $Button5 = GUICtrlCreateButton("Cripta!", 24, 144, 75, 25, $WS_GROUP) $Label11 = GUICtrlCreateLabel("File da decriptare:", 16, 189, 88, 17) $Input6 = GUICtrlCreateInput("", 104, 187, 185, 21) $Button6 = GUICtrlCreateButton("Sfoglia...", 296, 185, 75, 25, $WS_GROUP) $Label12 = GUICtrlCreateLabel("Chiave pubblica:", 16, 215, 83, 17) $Input7 = GUICtrlCreateInput("", 104, 213, 185, 21) GUICtrlSetTip(-1, "Comunica questo codice al destinatario e faglielo inserire nell'apposito campo per decriptare il testo.") $Label13 = GUICtrlCreateLabel("Destinazione file:", 16, 240, 84, 17) $Input8 = GUICtrlCreateInput("", 104, 238, 185, 21) $Button7 = GUICtrlCreateButton("Sfoglia...", 296, 235, 75, 25, $WS_GROUP) $Button8 = GUICtrlCreateButton("Decripta!", 24, 269, 75, 25, $WS_GROUP) GUICtrlCreateTabItem("") $Label1 = GUICtrlCreateLabel("Cripta/Decripta:", 8, 8, 79, 17) GUISetState(@SW_SHOW)
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 $Text = GUICtrlRead($Edit1) If $Text = "" Then MsgBox(16, "FBEncrypter", "Inserisci prima il testo da criptare!") Else $encrypt = _SAEncrypt($Text) GUICtrlSetData($Edit4, $encrypt[1]) GUICtrlSetData($Input1, $encrypt[2]) EndIf Case $Button2 $Text = GUICtrlRead($Edit2) $PubKey = GUICtrlRead($Input2) If $Text = "" Or $PubKey = "" Then MsgBox(16, "FBEncrypter", "Devi prima inserire il testo da decriptare e/o la chiave pubblica!") Else $decrypt = _SADecrypt($Text, $PubKey) GUICtrlSetData($Edit3, $decrypt) EndIf Case $Button3 $Open = FileOpenDialog("Seleziona il file da criptare", @DesktopDir, "Tutti i file (*.*)") GUICtrlSetData($Input3, $Open) Case $Button4 $Save = FileSaveDialog("Seleziona la destinazione del file (metti l'estensione!)", @DesktopDir, "File criptato (*.fbenc)") GUICtrlSetData($Input5, $Save) Case $Button5 If GUICtrlRead($Input3) = "" Or Not FileExists(GUICtrlRead($Input3)) Or GUICtrlRead($Input5) = "" Then MsgBox(16, "FBEncrypter", "Devi prima inserire un file da criptare, esso non esiste o non c'è nessun file di destinazione inserito!") Else $fOpen = FileOpen(GUICtrlRead($Input3), 16) $read = FileRead($fOpen) $encrypt = _SAEncrypt($read) _FileCreate(GUICtrlRead($Input5)) $spl = _PathSplit(GUICtrlRead($Input3), $szDrive, $szDir, $szFName, $szExt) $fOpen = GUICtrlRead($Input5) FileWrite($fOpen, $spl[4]&"|"&$encrypt[1]) GUICtrlSetData($Input4, $encrypt[2]) MsgBox(64,"FBEncrypter","Il file è stato criptato con successo!") EndIf Case $Button6 $Open = FileOpenDialog("Seleziona il file da decriptare", @DesktopDir, "File criptato (*.fbenc)") GUICtrlSetData($Input6, $Open) Case $Button7 If $Open = "" Then MsgBox(16, "FBEncrypter", "Devi prima inserire un file da decriptare!") Else $read = FileRead(GUICtrlRead($Input6)) $spl = StringSplit($read, "|") $Save = FileSaveDialog("Seleziona la destinazione del file", @DesktopDir, "File "&$spl[1]&" (*"&$spl[1]&")") GUICtrlSetData($Input8, $Save) EndIf Case $Button8 If GUICtrlRead($Input6) = "" Or Not FileExists(GUICtrlRead($Input6)) Or GUICtrlRead($Input8) = "" Or GUICtrlRead($Input7) = "" Then MsgBox(16, "FBEncrypter", "Devi prima inserire un file da decriptare, esso non esiste, non è stata immessa una chiave pubblica o non c'è nessun file di destinazione inserito!") Else $spl = StringSplit(FileRead(GUICtrlRead($Input6)), "|") $decrypt = _SADecrypt($spl[2], GUICtrlRead($Input7)) If FileExists(GUICtrlRead($Input8)) Then FileDelete(GUICtrlRead($Input8)) _FileCreate(GUICtrlRead($Input8)) FileWrite(GUICtrlRead($Input8), BinaryToString($decrypt)) MsgBox(64,"FBEncrypter","Il file è stato decriptato con successo!") Else _FileCreate(GUICtrlRead($Input8)) $fOpen = GUICtrlRead($Input8) FileWrite($fOpen, $decrypt) MsgBox(64,"FBEncrypter","Il file è stato decriptato con successo!") EndIf EndIf EndSwitch WEnd
| | |
| |
|