[ Príspevkov: 4 ] 
AutorSpráva
Offline

Skúsený užívateľ
Skúsený užívateľ
náhodné bity

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1585
Témy: 96 | 96
NapísalOffline : 07.12.2008 10:24 | náhodné bity

Ahojte.

Včera som prvý krát skúšal c++. Chcem si spraviť program na bezpečné mazanie dát (/prečistenie disku od vymazaných dát zápisom sekvencie náhodných bitov niekoľko krát za sebou).
Problém je v tom, že neviem poriadne, ako nasimulovať tie náhodné bity.
Vytvoril som si premennú typu char a pridelil jej náhodné číslo medzi 0 a 255. Myslel som si, že to bude fungovať. Lenže som zistil, že keď zapíšem 4 takéto byty, tak súbor má veľkosť 12 bytov (nie vždy, závisí od toho, aké byty sa vytvoria) :O . Tým pádom neviem zistiť, koľko som už zapísal.
Mohol by mi niekto pomôcť so spôsobom, ako vytvoriť náhodný byte o veľkosti 1 byte? :)

Kód, ktorý doteraz mám (berte do úvahy, že som nikdy v C ani C++ nerobil)
Kód:
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
   int filesize,i,rndint;
   char cr;
   cin >> filesize;
   FILE * pFile;
   pFile = fopen ("myfile.txt","w");
   if (pFile!=NULL){
      for(i=0;i<filesize;i++){
         srand((unsigned)time(0));
         cr = random()%255;
         fputs((cr+""),pFile);
      }
      fclose(pFile);
   }
}

Na prerobenie tam je toho ešte veľa, napríklad srand treba trošku inak vypočítavať, time nie je zrovna to pravé orechové. Tiež musím vypočítať voľné miesto na disku, teraz ručne zadávam veľkosť takéhoto súboru.


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3 | 3
NapísalOffline : 07.12.2008 11:45 | náhodné bity

Chyba je podla mna v tom, ze ty sice vygenerujes cislo, ktore v pamati zabera jeden bajt, ale ked sa zapise do suboru, dochadza ku konverzii na znaky a moze zaberat aj tie 3 bajty. Napr. vygenerujes cislo 123 a zapise sa do suboru, pricom su to 3 znaky a kazdy ma jeden bajt. Najlepsie by bolo pouzit formatovany vystup
fprintf(pFile, "%c", cr) - vtedy ti zapise znak, ktoreho hodnota je vygenerovane cislo v znakovej tabulke, napr. pre cislo 123 je to znak'{'
alebo das
cr = random()%10;, cim dosiahnes, ze hodnota cr bude len v rozsahu od 0 do 9, takze pri zapise do suboru budu mat tieto znaky len 1 bajt a zapisovat mozes pomocou fputs(), ako predtym.
Neskusal som to sice, ale myslim, ze by to malo fungovat... :rolleyes:


_________________
Empty your memory, with a free()… like a pointer!
If you cast a pointer to an integer,
it becomes the integer, if you cast a pointer to a struct, it becomes the struct…
The pointer can crash…, and can overflow…
Be a pointer my friend…
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4
NapísalOffline : 07.12.2008 14:34 | náhodné bity

namiesto fputs preba pouzit:

Kód:
fputc(cr,pFile);


lebo ono to fungovalo tak, ze ak cr bolo 123, tak Ti to vypisovalo cely retazec, ktory zacinal na adrese 123;
fputs... vypisuje retazec!!! a nie znak


Offline

Skúsený užívateľ
Skúsený užívateľ
náhodné bity

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1585
Témy: 96 | 96
Napísal autor témyOffline : 07.12.2008 15:08 | náhodné bity

Ďakujem za rady, pomohli. Keď program dokončím, hodím sem kód, snáď sa niekomu zíde.


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
 [ Príspevkov: 4 ] 


náhodné bity



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Bity ::: Bity ::: Bity

v Assembler, C, C++, Pascal, Java

8

563

24.04.2009 19:24

reDo

V tomto fóre nie sú ďalšie neprečítané témy.

bity

v Operačné systémy Microsoft

4

600

06.08.2008 18:22

asusko

V tomto fóre nie sú ďalšie neprečítané témy.

nahodne

v Redakčné systémy

7

822

20.08.2007 15:42

Flety

V tomto fóre nie sú ďalšie neprečítané témy.

Náhodné reštartovanie

v Operačné systémy Microsoft

0

387

15.04.2021 22:06

medove

V tomto fóre nie sú ďalšie neprečítané témy.

nahodne obrazky

v JavaScript, VBScript, Ajax

5

984

29.01.2009 20:43

dsljohn

V tomto fóre nie sú ďalšie neprečítané témy.

nahodne obrazky

v PHP, ASP

2

596

08.09.2008 7:25

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

Náhodné zamrzanie

v AMD čipové sady

2

605

21.09.2016 19:12

scopers

V tomto fóre nie sú ďalšie neprečítané témy.

nahodne video

v JavaScript, VBScript, Ajax

7

720

04.03.2010 12:14

vputin

V tomto fóre nie sú ďalšie neprečítané témy.

Nahodne BSOD

v Operačné systémy Microsoft

4

558

10.06.2020 17:22

4040

V tomto fóre nie sú ďalšie neprečítané témy.

náhodné BSOD

v Operačné systémy Microsoft

12

640

18.06.2013 22:32

walther

V tomto fóre nie sú ďalšie neprečítané témy.

Náhodné reštarty

v PC skrinky a zdroje

3

414

03.05.2016 14:04

Miso122

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie.

Nahodne vypinanie pc

v AMD čipové sady

2

648

11.07.2012 13:44

OmeGa

V tomto fóre nie sú ďalšie neprečítané témy.

Nahodne rozhadzana hudba

v Ostatné programy

0

433

25.03.2016 20:46

mareks4

V tomto fóre nie sú ďalšie neprečítané témy.

nahodne vykreslovanie - pascal

v Assembler, C, C++, Pascal, Java

16

1713

03.06.2007 22:38

juho

V tomto fóre nie sú ďalšie neprečítané témy.

Nahodne restartovanie systemu.

v Intel - Integrated Electronics

18

945

03.09.2011 1:33

Millfox

V tomto fóre nie sú ďalšie neprečítané témy.

Náhodné pády PC

v PC skrinky a zdroje

4

601

18.10.2015 22:15

tomkingsk



© 2005 - 2025 PCforum, edited by JanoF