Forum » Programiranje » [c#] DESCryptoServiceProvider key v file
[c#] DESCryptoServiceProvider key v file
Giller0 ::
LP. Pišem program ki kriptira in dekriptira določeno datoteko z simetričnim kriptografskim algoritmom (DES in AES). Vse gre, le nikakor ne kužim kako lahko generiran ključ shranim v datoteko. Ostali crypto provideri imajo metodo za shranjevanje v xml (npr. RSA) pri DES in AES pa ne duha in sluha o tem. Na googlu in v helpu sem prebral že vse živo pa nikjer nič o tem.
Se morda komu kaj sanja?
Hvala.
Se morda komu kaj sanja?
Hvala.
Jow..
Keki ::
kaj pa če greš trotlziher metodo pa pač odpreš/kreiraš file pa zapišeš v njega key kot string? Ziher ma metodo toString().
http://www.alfakan.si/
http://mihajerot.si/
http://mihajerot.si/
Giller0 ::
Zgleda, da mi samo to preostane... toString metoda pa ne deluje, ker gre za array bytov (byte[]), oziroma moraš vsako polje arraya posebaj z toString spreminjat in zapisovat v falj, ter potem obratno, ko bereš. Pa še 2 pomembna atributa ima ta class (key in IV key), tako da bom moral nek svoj xml kreirat.
Mnja, očitno druga ne preostane :)
Hvala, LP
Mnja, očitno druga ne preostane :)
Hvala, LP
Jow..
zerox ::
Načeloma ti za to ni potrebno ravno XML-a kreirat. Imaš pa sicer dve možnosti. Ena je, kot si že sam omenil, da zapišeš vsakega od atributov s streamwriterjem v datoteko. Lahko pa tudi celoten objekt serializiraš ter zapišeš v file.
BlueRunner ::
DES in AES sta izpeljana iz razreda SymmetricAlgorithm. Malo dolgovezen, ampak načeloma delujoč način je:
SymmetricAlgorithm alg; alg = new DESCryptoServiceProvider(); ... alg = new AesCryptoServiceProvider(); ... // Shrani podatke string name = alg.ToString(); int blockSize = alg.BlockSize; string keyData = Convert.ToBase64String(alg.Key); string ivData = Convert.ToBase64String(alg.IV); int cipherMode = (int)alg.Mode; int paddingMode = (int)alg.Pading; int feedbackSize = alg.FeedbackSize;
SymmetricAlgorithm alg; // Preberi podatke alg = SymmetricAlgorithm.Create(name); alg.BlockSize = blockSize; alg.Key = Convert.FromBase64String(keyData); alg.IV = Convert.FromBase64String(ivData); alg.Mode = (CipherMode)cipherMode; alg.Padding = (PaddingMode)paddingMode; alg.FeedbackSize = feedbackSize; ... alg.CreateEcryptor(); ... alg.CreateDecryptor(); ...
BlueRunner ::
Načeloma ti za to ni potrebno ravno XML-a kreirat. Imaš pa sicer dve možnosti. Ena je, kot si že sam omenil, da zapišeš vsakega od atributov s streamwriterjem v datoteko. Lahko pa tudi celoten objekt serializiraš ter zapišeš v file.
Serializacija na XXXManaged in XXXCryptoServiceProvider razredih ni možna. Zato ostane na voljo samo "pešačenje".
Giller0 ::
Hvala ti BlueRunner, tvoja rešitev deluje in niti ni tako dolga. Prej nisem vedel za ta Convert.ToBase64String(), ki spremeni v string cel array byte-ov.
Zdaj si generiram xml dokument in zgleda nekak tako:
Upam samo, da DES nikoli ne generira kljuca ki vsebuje recimo niz "< /IV>", ker potem stvar več ne dela :)
Hvala še enkrat, LP.
Zdaj si generiram xml dokument in zgleda nekak tako:
SHRANJEVANJE:
String keyData = Convert.ToBase64String(kljuc.Key);
String IVData = Convert.ToBase64String(kljuc.IV);
String zapis = "< Key>" + keyData + "< /Key>< IV>" + IVData + "< /IV>";
//zapisem string v file
BRANJE:
//berem string iz file-a
string keyData = text.Substring(5, text.IndexOf("< /Key>")-5);
string IVData = text.Substring(text.IndexOf("< IV>") + 4, text.IndexOf("< /IV>") - 4 - text.IndexOf("< IV>"));
Upam samo, da DES nikoli ne generira kljuca ki vsebuje recimo niz "< /IV>", ker potem stvar več ne dela :)
Hvala še enkrat, LP.
Jow..
Zgodovina sprememb…
- spremenil: Giller0 ()
BlueRunner ::
BASE64 kodiranje (malo pogooglaj) ne uporablja znakov < in >. Zato je popolnoma varno za uporabo v XML dokumentih.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Davčne blagajne (strani: 1 2 3 4 … 24 25 26 27 )Oddelek: Programiranje | 331484 (71487) | Macketina |
» | E-računOddelek: Programiranje | 7420 (4183) | ivanhoe5x |
» | [JAVA] HTTPS clientOddelek: Programiranje | 3167 (1897) | peterv6i |
» | [Android] Nov tip shranjevanja slikeOddelek: Programiranje | 2175 (1299) | urosz |
» | [c#] shrani text, tabele, slikeOddelek: Programiranje | 1501 (1107) | klemen93 |