[ 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ý: 03.12.25
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

v Windows

4

623

06.08.2008 18:22

asusko

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

Bity ::: Bity ::: Bity

v Backend

8

595

24.04.2009 19:24

reDo

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

nahodne

v CMS

7

859

20.08.2007 15:42

Flety

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

nahodne video

v Frontend

7

776

04.03.2010 12:14

vputin

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

Nahodne BSOD

v Windows

4

610

10.06.2020 17:22

4040

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

náhodné BSOD

v Windows

12

681

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

448

03.05.2016 14:04

Miso122

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

Náhodné reštartovanie

v Windows

0

431

15.04.2021 22:06

medove

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

nahodne obrazky

v Frontend

5

1027

29.01.2009 20:43

dsljohn

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

nahodne obrazky

v Backend

2

627

08.09.2008 7:25

stenley

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

Náhodné zamrzanie

v AMD platformy

2

652

21.09.2016 19:12

scopers

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

náhodné zobrazovanie obrázkov

v Backend

10

776

09.09.2011 21:46

juho

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

Náhodné pády PC

v Ostatné

5

299

25.10.2023 8:37

tatko Tom

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

nahodne stmavnutie monitoru

v Monitory, televízory a projektory

0

506

11.11.2020 11:00

romcoRT

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

Nahodne skoky pingu

v Siete

2

501

16.10.2013 10:40

Smith Wesson

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

nahodne seknutie NB

v Notebooky a netbooky

0

405

31.05.2012 13:27

Matou



© 2005 - 2026 PCforum, edited by JanoF