Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6 ja tiedostojen kryptausta

Sivun loppuun

Aku2 [07.06.2003 23:48:25]

#

Olen koittanut etsiä netistä sekä MSDN:stä, mutta ei löytynyt mitään järellistä tietoa tiedostojen kryptaukseen.
API:lla tuo kait voitanee tehdä, mutta miten?
Myös muut keinot/esimerkkikoodit kelpaa.

Eli jos joltakulta löytyy esimerkkiä, niin tänne vaan.

trinit [08.06.2003 11:04:40]

#

Kävisikö DES / Triple DES kryptaus? Vaatii desdll.dll kirjaston lisäksi ja kaikki tarvittavat esimerkit ja kirjastot löytyvät osoitteesta http://www.kri-soft.be/vbdes/index.php . Kryptaa sekä merkkijonoja että tiedostoja 56 bittisellä avaimella.

Löysin tuon joskus kun tarvitsin kryptaustoimintoja ohjelmaani.

thefox [09.06.2003 15:21:51]

#

Miten järeää kryptausta olet hakemassa? Kirjastoja kyllä löytyy vaikka sun mille algoritmille -- ei tarvitse paljoa omaa päätään vaivata.

Aku2 [09.06.2003 21:39:14]

#

ei tarbvitse olla mikään järeä.
Muistini mukaan kyllä pitäisi APIllakin saada kryptattua tai jollakin VB:n mukana tulevalla kirjastolla.
Liittyy jotenkin "advapi32.dll" kirjastoon ja "Microsoft Base Cryptographic Provider v1.0"
Tosin mitään monimutkaista en hae, riittää, kun saisi tekstitiedoston jollakin tapaa sotkettua helposti lukukelvottomaksi, jonka vain ohjelma osaa aukaista.

Mitään muiden tekemiä kirjastoja en oikein viitsisi käyttää, kuten trinitin mainitsemaa, jonka lisenssi kieltää niiden käytön maksullisissa softissa. Tosin en ole edes varma, saanko tuota koskaan maksullisena julkaistua. siis mitä nyt olen rakentamassa.

trinit [09.06.2003 22:03:53]

#

lainaus:

riittää, kun saisi tekstitiedoston jollakin tapaa sotkettua helposti lukukelvottomaksi

Tämä nyt ei ihan taida aiheeseen kuulua, mutta mikäli tiedosto pitää vain sotkea siten, ettei kuka tahansa SunnuntaiHakkeri(tm) :) pysty tiedostoa lukemaan ainakaan kovin helposti niin katsopa seuraava koodiesimerkki:

Public Function RevChar(rc As String) As String

    Dim tmp As String

    For i = 1 To Len(rc)
        tmp = tmp & Chr$(255 - Asc(Mid$(rc, i, 1)))
    Next

    RevChar = tmp

End Function

Koodi kertonee parhaiten mitä se tekee, mutta lyhyesti sanottuna vähennetään jokaisen merkkijonon merkistä 255 jolloin kys. merkki muuttuu joksikin toiseksi. "Kryptaus" aukeaa samalla funktiolla. Tuo on vain helppo purkaa kun vain keksii miten tiedosto on alunperin sotkettu.

Grey [09.06.2003 22:20:58]

#

Kun puhe on nyt kryptauksesta, niin tulipa mieleen entä kun tuollaiseen laittaa vielä salasanan? Miten tarkistetaan että salasana jolla tiedosto on suojattu, on oikein? Asia kun on minua mietityttänyt useastikin. Ja myös sekin että kun kirjautuu johonkin järjestelmään, miten se järjestelmä varmistaa salasanan oikeellisuuden?

-Grey-

Antti Laaksonen [09.06.2003 23:41:39]

#

lainaus:

Kun puhe on nyt kryptauksesta, niin tulipa mieleen entä kun tuollaiseen laittaa vielä salasanan?

Yksinkertaistettu esimerkki: Tiedostossa on merkit ABCDEFGHIJKLMNO ja salasana on TESTI. Nyt salasanaa toistetaan niin monta kertaa, että saadaan kaksi samanpituista merkkijonoa, joista jälkimmäinen on salausavain:

A B C D E F G H I J K L M N O
T E S T I T E S T I T E S T I

Eli ASCII-koodeina:

65  66  67  68  69  70  71  72  73  74  75  76  77  78  79
84  69  83  84  73  84  69  83  84  73  84  69  83  84  73

Tämän jälkeen ylemmän ja alemman rivin ASCII-koodit ynnätään toisiinsa:

149 135 150 152 142 154 140 155 157 147 159 145 160 162 152

Nyt tiedosto on salakirjoitettuna seuraavanlainen:

ò ç û ÿ Ä Ü î ø Ø ô ƒ æ á ó ÿ

Purkaminen tapahtuu täsmälleen päinvastoin.

thefox [10.06.2003 12:42:50]

#

Salasanan oikeellisuuden voi tarkistaa checksummilla (ZIP ja RAR taitavat molemmat käyttää CRC-32:ta). Ja tosiaan, 'järjestelmissä' homma menee usein myös jonkin hashin kautta, eli verrataan etukäteen tallennettua hashia käyttäjän antaman salasanan hashiin.

Suhteellisen erikoinen tapa kryptata tiedosto on seedata VB:n satunnaislukugeneraattori jollain määrätyllä luvulla (joka voidaan vaikka arpoa ensin, ja sitten tallentaa tiedostoon), sitten vaikkapa Xor:ailla tiedoston tavuja yksitellen RND:stä saaduilla luvuilla. Dekryptauksessa sitten vain otetaan tiedostosta se seedi (vaikkapa 4-tavuinen), alustetaan satunnaislukugeneraattori sillä, ja Xor:ataan taas (Xor on "käännettävissä", 1 Xor 2 = 3 ja 3 Xor 2 = 1).

Jos tuosta nyt selvää sai, niin kannattaa ottaa vielä huomioon VB:n RND:n ihmeellisyydet. Eli lähinnä se, että "Randomize seed":in jälkeen tulee kutsua "foo = Rnd(-1)":stä, muuten VB ei palauttele samoja arvoja mitä kryptatessa.

Aku2 [11.06.2003 10:12:22]

#

Tuolta löytyi sellainen, jota kaipailin.
Eiköhän tuosta saa muokkaamalla omaan ohjelmaani sopivan.
Onko tuosta mihinkään?

http://koti.mbnet.fi/ilarim/fin/downloads.html


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta