Forum www.maciuchnagames.fora.pl Strona Główna
FAQ Szukaj Użytkownicy Grupy Profil Zaloguj się, by sprawdzić wiadomości
Forum www.maciuchnagames.fora.pl Strona Główna  Zaloguj  Rejestracja
Co tu jest źle (dla zaawansowanych) :]

 
Napisz nowy temat   Odpowiedz do tematu    Forum www.maciuchnagames.fora.pl Strona Główna -> Programowanie
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Velpreso
forumowicz



Dołączył: 25 Lis 2012
Posty: 10
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Czw 21:26, 19 Cze 2014    Temat postu: Co tu jest źle (dla zaawansowanych) :]

Tak więc postanowiłem zrobić programik który pobiera od użytkownika hasło (do max długości 14 liter) i następnie koduje je według podanej tabeli. Kod działa ale zajmuje 3000 linijek -,- Dlatego napisałem coś takiego:

Kod:
@echo off
chcp 1250 > nul
color 0a
:liczenie0
cls
SETLOCAL ENABLEDELAYEDEXPANSION
set /p str=Podaj hasło:
set len=0
FOR %%a in (%str%) do ( set str3=%%a
call :liczenie1 %%a)
Exit /b
:liczenie1
set str2=!str3:~%len%,1!
if "%str2%"=="" ( call :liczenie2 ) ELSE (
set /a len=%len%+1
call :liczenie1 %str3% )
Exit /b
:liczenie2
cls
:szyfrowanie0
IF %len% GEQ 1 set s1=%str:~0,1%
IF %len% GEQ 2 set s2=%str:~1,1%
IF %len% GEQ 3 set s3=%str:~2,1%
IF %len% GEQ 4 set s4=%str:~3,1%
IF %len% GEQ 5 set s5=%str:~4,1%
IF %len% GEQ 6 set s6=%str:~5,1%
IF %len% GEQ 7 set s7=%str:~6,1%
IF %len% GEQ 8 set s8=%str:~7,1%
IF %len% GEQ 9 set s9=%str:~8,1%
IF %len% GEQ 10 set s10=%str:~9,1%
IF %len% GEQ 11 set s11=%str:~10,1%
IF %len% GEQ 12 set s12=%str:~11,1%
IF %len% GEQ 13 set s13=%str:~12,1%
IF %len% GEQ 14 set s14=%str:~13,1%
IF %len% GEQ 15 goto liczenie0
set c=0
:hashset
set /a c=%c%+1
:szyfrowanie1
IF s%c%==9 set hash%c%=A
IF s%c%==Q set hash%c%=B
IF s%c%==8 set hash%c%=C
IF s%c%==x set hash%c%=D
IF s%c%==7 set hash%c%=E
IF s%c%==Z set hash%c%=F
IF s%c%==6 set hash%c%=G
IF s%c%==y set hash%c%=H
IF s%c%==5 set hash%c%=I
IF s%c%==W set hash%c%=J
IF s%c%==4 set hash%c%=K
IF s%c%==u set hash%c%=L
IF s%c%==3 set hash%c%=M
IF s%c%==T set hash%c%=N
IF s%c%==2 set hash%c%=O
IF s%c%==s set hash%c%=P
IF s%c%==1 set hash%c%=R
IF s%c%==R set hash%c%=S
IF s%c%==0 set hash%c%=T
IF s%c%==p set hash%c%=U
IF s%c%==/ set hash%c%=W
IF s%c%==O set hash%c%=Y
IF s%c%==n set hash%c%=X
IF s%c%==_ set hash%c%=Q
IF s%c%==M set hash%c%=a
IF s%c%==q set hash%c%=b
IF s%c%==l set hash%c%=c
IF s%c%==X set hash%c%=d
IF s%c%==K set hash%c%=e
IF s%c%==z set hash%c%=f
IF s%c%==j set hash%c%=g
IF s%c%==Y set hash%c%=h
IF s%c%==I set hash%c%=i
IF s%c%==w set hash%c%=j
IF s%c%==h set hash%c%=k
IF s%c%==U set hash%c%=l
IF s%c%==G set hash%c%=m
IF s%c%==t set hash%c%=n
IF s%c%==f set hash%c%=o
IF s%c%==S set hash%c%=p
IF s%c%==E set hash%c%=r
IF s%c%==r set hash%c%=s
IF s%c%==d set hash%c%=t
IF s%c%==P set hash%c%=u
IF s%c%==C set hash%c%=w
IF s%c%==o set hash%c%=y
IF s%c%==b set hash%c%=z
IF s%c%==N set hash%c%=x
IF s%c%==A set hash%c%=q
IF s%c%==, set hash%c%=1
IF s%c%==0 set hash%c%=2
IF s%c%==8 set hash%c%=3
IF s%c%==6 set hash%c%=4
IF s%c%==4 set hash%c%=5
IF s%c%==2 set hash%c%=6
IF s%c%==_ set hash%c%=7
IF s%c%==/ set hash%c%=8
IF s%c%==9 set hash%c%=9
IF s%c%==7 set hash%c%=0
IF s%c%==5 set hash%c%=/
IF s%c%==3 set hash%c%=,
IF s%c%==1 set hash%c%=_
:sprawdzenie
set /a b=%c%+1
IF %len% LSS %b% goto koniec
IF %len% GEQ %b% goto hashset
:koniec
echo Hash: %hash1%%hash2%%hash3%%hash3%%hash4%%hash5%%hash6%%hash7%%hash8%%hash9%%hash10%%hash11%%hash12%%hash13%%hash14%
pause > nul



Chodzi tu głównie o ten warunek
Cytat:
IF s%c%==1 set hash%c%=x
Stary kod różni się tym że nie ma tej niby pętli. Jakieś pomysły ? Very Happy
Powrót do góry
Zobacz profil autora
Autor Wiadomość
CreepyNinja_
newbie



Dołączył: 30 Gru 2014
Posty: 1
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Wto 10:10, 30 Gru 2014    Temat postu: RE: Co tu jest źle (dla zaawansowanych) :]

Bry.
To może ja podsunę pomysła
Ten kodzik:
Kod:
IF s%c%==, set hash%c%=1
IF s%c%==0 set hash%c%=2
IF s%c%==8 set hash%c%=3
IF s%c%==6 set hash%c%=4
IF s%c%==4 set hash%c%=5
IF s%c%==2 set hash%c%=6
IF s%c%==_ set hash%c%=7
IF s%c%==/ set hash%c%=8
IF s%c%==9 set hash%c%=9
IF s%c%==7 set hash%c%=0
IF s%c%==5 set hash%c%=/
IF s%c%==3 set hash%c%=,
IF s%c%==1 set hash%c%=_

Podmienić na:
Kod:
IF s%c%==m set hash%c%=1
IF s%c%==L set hash%c%=2
IF s%c%==k set hash%c%=3
IF s%c%==J set hash%c%=4
IF s%c%==i set hash%c%=5
IF s%c%==H set hash%c%=6
IF s%c%==g set hash%c%=7
IF s%c%==F set hash%c%=8
IF s%c%==e set hash%c%=9
IF s%c%==D set hash%c%=0
IF s%c%==c set hash%c%=/
IF s%c%==B set hash%c%=,
IF s%c%==a set hash%c%=_

+linijka: (bo chyba ją pominąłeś gdzieś)
Kod:
IF s%c%==, set hash%c%=Z


Jakby to nie współgrało np. z de-koderem xd, to trzeba by wprowadzić osobne kodowanie dla liczb 0-9 i znaków "_" "/" ",", bo to nie litery - nie można je podzielić na duże i małe Razz

Pozdro Smile
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.maciuchnagames.fora.pl Strona Główna -> Programowanie Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2002 phpBB Group
BBTech Template by © 2003-04 MDesign
Regulamin