Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet olvashatatlan...

Hogyan lehet olvashatatlan formátumban menteni fájlt?

Figyelt kérdés

type TSor = record

Nev: string[30];

Cim: char;

Szam: array[1..3] of integer;

end;

var f: file of TSor;

Adat: TSor;

Nev: string;



Nev:='proba.ttl';

assign(f,Nev);

rewrite(f);

for i:= 1 to random(10)+1 do

begin

Adat.Nev:='asds';

Adat.Cim:=char(random(25)+97);

for j:= 1 to 3 do Adat.Szam[j]:=random(300);

write(f,Adat);

end;

close(f);


A fontos részeket kimásoltam. Ezt a fálj tudom olvasni is, ahogy kell.

Azt szeretném megoldani, hogy a proba.ttl nevű fájlt pl. notepad++szal megnyitva ne lehessen belőle semmit kivenni. Mert most ha megnyitom, akkor a számok helyén ismeretlen karakterek vannak, de a stringeket simán ki lehet olvasni. Meg tudom ezt annélkül oldani, hogy pl. egyesével beszorozgatnám a karakterek ascci kódjait. Tehát létezik erre vmi egyszerűbb módszer?



2016. jan. 31. 18:18
 1/7 ejbenjaro ***** válasza:
100%
Vagy a karakterláncot kódolod kiírás előtt, vagy az egész fájlt.
2016. jan. 31. 18:23
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:
0%

El kell kódolni a stringeket és futásidőben dekódolni. Erre van 100+ lehetőség.

Kíszűröd az általad használt karaktereket, ezt a subsetet használod fel konstansként (mondjuk keverve) és az indexükre hivatkozol.

De van még sok sok egyéb megoldás ilyesmire.

2016. jan. 31. 18:25
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

Én ezt így értelmezem, pl. ha van egy stringem:

Minden karakterem ascii kódját szorzom 3-mal és hozzáadok 7-et, beolvasáskor ugyanez, egyértelmű h így megfelelő eredményt, kapok és csak az én programom tudja megfejteni.

De esetemben write(f,Adat) itt egy recordot írok a fájlba, itt is lehet hasonlóképpen? Vagy rosszul gondolom?

2016. jan. 31. 20:51
 4/7 anonim ***** válasza:

Lehet, persze.

De ennél talán jobb, rövidebb ha a karaktereken valamilyen bitműveletet végzel. Mondjuk minden bitet átbillentesz, vagy csak az elsőt.

2016. jan. 31. 21:02
Hasznos számodra ez a válasz?
 5/7 SimkoL ***** válasza:

Egy pici csavarral, a string hosszának függvényében változik a kulcs:


program project1;


uses Classes, Math, SysUtils, StrUtils;


type

TSor = record

nev: string[30];

cim: char;

szam: array[1..3] of integer;

end;


var

f: file of TSor;

adat: TSor;

myFile: string;

i, j: integer;


function key1(x: extended): string;

var

alap: string;

i: integer;

begin

Result := '';

alap := '';

alap := alap + Copy(FloatToStr(Abs(Frac(Sin(x)))), 3, 10);

alap := alap + Copy(FloatToStr(Abs(Frac(Cos(x)))), 3, 10);

alap := alap + Copy(FloatToStr(Abs(Frac(Tan(x)))), 3, 10);

alap := alap + Copy(FloatToStr(Abs(Frac(ArcTan(x)))), 3, 10);

alap := alap + Copy(FloatToStr(Abs(Frac(RadToDeg(x)))), 3, 10);

alap := alap + Copy(FloatToStr(Abs(Frac(DegToRad(x)))), 3, 10);

alap := alap + ReverseString(alap);

for i := 0 to 29 do

begin

Result := Result + Chr(StrToInt(Copy(alap, (i * 4) + 1, 3)));

end;

end;


begin

myFile := 'proba.ttl';

Assign(f, myFile);

ReWrite(f);

for i := 1 to 3 do

begin

adat.nev := 'Adat' + IntToStr(i);

Write('Eredeti: ', adat.nev, ' ');

adat.nev := XorString(key1(Length(adat.nev)), adat.nev);

adat.cim := Char(Random(25) + 97);

for j := 1 to 3 do adat.szam[j] := Random(300);

Write(f, adat);

WriteLn('Kodolt: ', adat.nev, ' ', 'Dekodolt: ', XorString(key1(Length(adat.nev)), adat.nev));

end;

for i := 1 to 3 do

begin

adat.nev := 'Adat0' + IntToStr(i);

Write('Eredeti: ', adat.nev, ' ');

adat.nev := XorString(key1(Length(adat.nev)), adat.nev);

adat.cim := Char(Random(25) + 97);

for j := 1 to 3 do adat.szam[j] := Random(300);

Write(f, adat);

WriteLn('Kodolt: ', adat.nev, ' ', 'Dekodolt: ', XorString(key1(Length(adat.nev)), adat.nev));

end;

for i := 1 to 3 do

begin

adat.nev := 'Adat00' + IntToStr(i);

Write('Eredeti: ', adat.nev, ' ');

adat.nev := XorString(key1(Length(adat.nev)), adat.nev);

adat.cim := Char(Random(25) + 97);

for j := 1 to 3 do adat.szam[j] := Random(300);

Write(f, adat);

WriteLn('Kodolt: ', adat.nev, ' ', 'Dekodolt: ', XorString(key1(Length(adat.nev)), adat.nev));

end;

Close(f);

ReadLn;

end.

2016. febr. 1. 08:38
Hasznos számodra ez a válasz?
 6/7 tabaki ***** válasza:

@#5:


Itt a #6 hozzászólás második programjában sokkal kevésbé furmányos módon, de ilyesfélével szívattam a lusta kérdezőt (aki a jelek szerint azóta sem vette a fáradságot, hogy megtalálja az egyszerű trükköt, amivel kifoghat a bárgyú „titkosításon”):

http://www.gyakorikerdesek.hu/szamitastechnika__programozas_..


Sajna, az a gépem éppen tönkrement, amelyiken a titkosítást végző programot írtam, ezért azt nem közlöm, de nem túl nehéz rekonstruálni, csak most megyek a dolgomra...

2016. febr. 1. 12:48
Hasznos számodra ez a válasz?
 7/7 tabaki ***** válasza:

Csavar nélkül, 1 bites eltolással:

[link]

2016. febr. 2. 04:36
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!