Sifrovani Text

1

Sifrovani Text

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12402

Dragi gradjani MyCity-a treba mi pomoc. Sigurno neko od vas ima brata...
Ja imam napravio sam program koji ima password i koji sacuvava moj text u *.srk extenziju. Ali opet moze da se otvori preko notepada. Moj brat je to provalio pa sad cita moje stvari. Ako neko moze da mi pomogne da kada sacuvam text umesto da program sacuva text koji sam ja napisao da ga prebaci u neki kod ili string ili tako nesto. A kad ga ucitam da pise text koji sam sacuvao ali bez stringa. Ovo je sifrovanje texta. Molim vas pomognite ne mogu da podnesem vise da mi brat cita sve i svasta ( MOJE ). Hvala
P.S Dajte da ozivimo VB forum.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Najlakse ti je da XOR-ujes podatke.

Posto ja "ne pricam" VB vec godinama, mogu samo da ti raspredem malo teorije.

U jednoj petlji ucitavas slovo po slovo u jednu string/char varijablu.
Onda u drugu integer varijablu uneses ASCII kod tog slova.
Nad tim integerom izvrsis XOR operaciju sa proizvoljnim brojem od 1 do 255 (A = A xor 17)
Pretvoris taj integer ponovo u string/char i upises u fajl.

Za povratnu operaciju moras da uradis ponovo XOR sa istim brojem sa kojim si uradio i pri "sifrovanju" (u nasem primeru sa brojem 17).



offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12402

Hvala ali moze li neko da ispise kod? Jer sam ja mislio da za svako slovo dam nov string tako da se svako slovo promeni. Hvala. * Bilo bi lepo da neko da kod za @bobby-ev opis. *

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Srki94 ::Jer sam ja mislio da za svako slovo dam nov string tako da se svako slovo promeni.

Upravo ce to i da se desi.

Pogledaj prvo sledecu tabelu:
http://asciitable.com/

Vidis, svako slovo ima svoj ASCII kod (ukoliko su slova iz engleskog alfabeta).

Sada ukljuci onaj standardni Windowsov digitron.
Ukucaj kod 65 (ukoliko pogledas ASCII tabelu, to ti je slovo A).
Onda klikni na operaciju XOR i ukucaj 17 (radimo 65 xor 17).
Rezultat je 80.
Ukoliko pogledas ASCII tabelu ponovo, videces da je 80 kod za slovo P.

Sada iskoristi taj digitron i izracunaj 80 xor 17.
Dobices ponovo 65.

Upravo si se upoznao sa najbitnijom karakteristikom XOR operacije - u oba slucaja si koristio 17, i za kodiranje, i za dekodiranje.

Sada na tebi ostaje samo da potrazis kako se u VB-u dobija ASCII vrednost nekog slova, i kako se nakon toga od ASCII koda dobija string (da bi mogao sifrovan podatak da upises u fajl).

Na brzinu sam ti nasao sledeci link:
http://www.vbexplorer.com/VBExplorer/Focus/strings_tutorial_3.asp

Pogledaj naredbe CHR$ i ASC.

offline
  • Pridružio: 25 Maj 2007
  • Poruke: 114
  • Gde živiš: Novi Sad, Sombor

Evo ti funkcija koja sifruje/desifruje tekst i to u zavisnosti od sifre. Sifra moze biti proizvoljne duzine od 1 do 50 karaktera. U zavisnosti od sifre, zavisi i nacin sifrovanja, jer svako slovo sifre ulazi u operaciju XOR. Napomena: Postoji nacin da sa razlicitim siframa dobijes isto konvertovanje npr: ma i mama, ta i tata ili ba i baba .....

Function Konvertovanje(Sifra As String, Tekst As String) As String     Dim Novi_Tekst As String     Dim Slovo As String * 1     Dim i As Long     Dim j As Long     Dim Duzina_Teksta As Long     Dim Duzina_Sifre As Integer     Dim Kod(50) As Integer     Dim Slovo_ASC As Integer         Duzina_Sifre = Len(Sifra)     Duzina_Teksta = Len(Tekst)         For i = 1 To Duzina_Sifre         Slovo = Mid(Sifra, i, 1)         Kod(i - 1) = Asc(Slovo)     Next i         Novi_Tekst = ""     For i = 1 To Duzina_Teksta         Slovo = Mid(Tekst, i, 1)         Slovo_ASC = Asc(Slovo)         j = i Mod Duzina_Sifre         Slovo_ASC = Slovo_ASC Xor Kod(j)         Novi_Tekst = Novi_Tekst + Chr(Slovo_ASC)     Next i     Konvertovanje = Novi_Tekst End Function

samo trebas da pozoves funkciju u tvom programu:

npr:
Sifra=Text1.text Novi_Tekst=Konvertovanje(Sifra,Tekst)

za rezultat konvertovanja nemoj koristiti TextBox, jer se prilikom konvertovanja dobijaju karakteri koji nisu vidljivi u TextBox-u i on ih ne pamti, nego koristi neki string. Za probu mozes napisati sledeci kod.

Private Sub Command1_Click()     Dim Pocetni_Tekst as String     Dim Sifrovani_Tekst as String     Dim DeSifrovani_Tekst as String     Dim Sifra as String     Sifra=Text1.Text            Pocetni_Tekst=Text2.Text     Sifrovani_Tekst=Konvertovanje(Sifra,Pocetni_Tekst)     Text3.Text=Sifrovani_Tekst     DeSifrovani_Tekst=Konvertovanje(Sifra,Sifrovani_Tekst)     Text4.Text=DeSifrovani_Tekst End Sub

na formu postavi 4 TextBox-a
u Text1 unosis sifru, a u text2 unosis tekst koji zelis da sifrujes, u text3 se nalazi sifrovani tekst a u Text4 se nalazi desifrovani tekst.

U Properties podesi:
Text1 - MaxLength = 50 ili manje
Text2,Text3,Text4 - MultiLine=True, ScrollBars=3-Both
Text3,Text4 - Locked=True

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12402

Hvala, Hvala svima probacu oba nacina. Very Happy. A el neko zna npr ja sam stavio jednu lozinku koja nemoze da se menja, da bih je promenio morao bih da pokrenem ponovo projekat i da promenim lozinku pa onda da compajlujem u exe. Hteo bih npr da imam opciju promeni lozinku i onda da upisem novu, pa da se ona sacuva nekako (ali da nemoze da se otvori) i onda koristi tu lozinku. Ovo je princip kao u programima sacuvaj podesavanja. Ako ste me razumeli. I kako da popracim bag: Kad idem na save onda se otvori save preko common dialoga a ako slucajno pritisnem cancel odma se pojavi runtime error. Probao sam sa on error go to ... ali nece. Hvala.

Dopuna: 14 Maj 2008 22:28

@ Karlos

Da li ce ovo raditi tj da li si siguran da cu moci da sacuvam i kako? Ako treba dacu vam program da pogledate, mozda ako neko ima vremena da i uradi. Uci se na primerima Very Happy.

Dopuna: 14 Maj 2008 22:34

@ bobby

Hvala ali da li ovo znaci da cu za svako slovo morati da kucam za svaki broj posebno, naravno. A kako da proverim da li u tekstu ima bilo gde jedno slovo ili naprimer bezobrazna rec. I to bi isao kod naprimer ako je bilo gde u tekstu ta i ta rec desi se to i to. Ako ovo znam onda cu moci naprimer ako ima bilo gde u tekstu slovo a ono se desifruje u neki drugi ascii kod pomocu xor. Problem je sto neznam kod za to. ( Obj: kako da proverim ako ima slovo a bilo gde u textu ) Hvala

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Lakse mi je da ti napravim program Smile

Vidi, ne juris slova, vec krenes redom:
- prvo slovo teksta XOR sifra
- drugo slovo teksta XOR sifra
.
.
.
- zadnje slovo teksta XOR sifra

Isto tako i desifrujes:
- prvo slovo/znak sifrovanog teksta XOR sifra
- drugo slovo/znak sifrovanog teksta XOR sifra
.
.
.
- zadnje slovo/znak sifrovanog teksta XOR sifra

Znaci, radis u petlji i naravno ne radis sa samim slovima, vec sa njihovim ASCII kodovima (posto ne mozes da XORujes slova, vec mora da bude brojka)

U mom primeru za sifru uzimas broj izmedju 1 i 255.

Karlos ti je dao gore sasvim dovoljno podataka, prouci njegove primere.

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12402

@ Bobby pa ajde uradi mi molim te. Samo mi kazi kako da nadjem ako naprimer slovo a ima bilo gde u textu.

offline
  • Pridružio: 25 Maj 2007
  • Poruke: 114
  • Gde živiš: Novi Sad, Sombor

Recimo da pogledas Help->Index u Visual Basic-u nasao bi sledece:

InStr([start, ]string1, string2[, compare])

The InStr function syntax has these arguments:

Part Description

start Optional. Numeric expression that sets the starting position for each search. If omitted, search begins at the first character position. If start contains Null, an error occurs. The start argument is required if compare is specified.

string1 Required. String expression being searched.

string2 Required. String expression sought.

compare Optional. Specifies the type of string comparison. The compare argument can be omitted, or it can be 0, 1or 2. Specify 0 (default) to perform a binary comparison. Specify 1 to perform a textual, noncase-sensitive comparison. For Microsoft Access only, specify 2 to perform a comparison based on information contained in your database. If compare is Null, an error occurs. If compare is omitted, the Option Compare setting determines the type of comparison.


Znaci ako hoces da nadjes neku rec npr "Basic" u nekom tekstu npr "Visual Basic 6.0"

Tekst="Visual Basic 6.0" Rec="Basic" Mesto=InStr(1,Tekst,Rec)

Po izvrsenu ovog koda promenljiva Mesto bi dobila vrednost 8, tj poziciju reci u tekstu.
U slucaju da rec ne postoji u tekstu funkcija InStr vraca vrednost 0.

Bobby ti je dao link gde se nalazi ova i jos mnogo funkcija koje ce ti mozda zatrebati, kao naprimer Replace koja jedan string zamenjuje drugim.

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12402

@ Karlos
Nemam MSDN Sad

Dopuna: 15 Maj 2008 0:03

Ne razumem kod. Da li da deklarisem Tekst, Rec, Mesto?

Ko je trenutno na forumu
 

Ukupno su 908 korisnika na forumu :: 16 registrovanih, 4 sakrivenih i 888 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Atomski čoban, Bobrock1, dragan_mig31, goxin, ILGromovnik, Kubovac, kybonacci, mkukoleca, Nikolaa11, nikoladim, raptorsi, S2M, vandrej, vladulns, zlatkoa987, Čivi