szyfrowanie plików typu: zip, rar

0

Jak zrobić, aby mój program potrafił zaszyfrować i odszyfrować pliki typu: zip i rar. Mam już napisane na XOR'ze że szyfruje i odszyfrowuje pliki txt i chce powiększyć go o tą pytaną funkcje. Program w C# (Windows Form Application).

0

No jak dla mnie, to dużej różnicy nie ma. Traktujesz i jedno i drugie jak tablicę (stream) bajtów, tak?

1

Wróżka Elwira by się przydała...
Chodzi ci o funkcjonalność wbudowaną w specyfikację plików zip/rar, funkcjonalność wbudowaną w .NET czy twoją własną metodę szyfrowania...?

0

Chodzi mi głównie o jakiś kod programu który umie szyfrować i odszyfrować dane w rar i zip za pomocą XOR. Chce to zrobić tak: wybieram lokalizacje pliku rar lub zip podaje jakąś tam cyfrę np.10 i klikam zaszyfruj dane. I mam zaszyfrowane archiwum. Podobnie chcę tak zrobić w drugą stronę.

0

Czyli ma rozpakować archiwum, zaszyfrować dane i spakować je z powrotem?

0

Wiesz co Wibowit właśnie o to chodzi. I w drugą stronę tak samo.

0

Do ZIPa powinny być jakieś darmowe komponenty (przynajmniej jeżeli chodzi o metodę kompresji Deflate32 lub brak kompresji), ale RAR już jest formatem własnościowym i nie ma darmowych kompresorów do RARa (tzn nawet jeśli są to autorzy muszą zapłacić za licencje).

0

Jak to zrobić, ma jakiś ktoś pomysł? :)

0

Czy nikt nie może mi pomoc :(

0

Powiedziałbym raczej, że nikt nie chce, bo nikt nie wie o co ci chodzi.

0

Czyli tak:

Chcesz wypakować pliki z archiwum zip lub rar.
Każdy plik jakoś tam zakodować.
Spakować pliki z powrotem do zip lub rar.

Tylko po co ?
Nie lepiej zakodować całe archiwum ?

0

A może wystarczy odpalić z programu tego obrzydliwego WinRARa z odpowiednimi parametrami?

0

Wolałbym żeby to mój program szyfrował i odszyfrowywał rar i zip, a nie winrar.

1

Problem w tym że mam wrażenie że ty nadal nie wiesz czego chcesz...

Tak jak pisałem, masz 3 możliwości:

  1. Szyfrowanie plików ZIP zgodnie z ich formatem. Wtedy otrzymasz pełnoprawne spakowane archiwum (np. programy będą wiedziały że jest skompresowane). Najprościej do tego użyć którejś z gotowych bibliotek typu http://dotnetzip.codeplex.com/ albo http://www.icsharpcode.net/opensource/sharpziplib/ (tutaj przykład: http://www.componentace.com/zip-aes-encryption-c-sharp.htm)

  2. Szyfrowanie całych plików ZIP za pomocą tego twojego XOR-a - poglądowo (pseudokod pisany z palca, w miarę zgodny z kodem C#):

byte[] key = new byte[] {0xAB, 0xBC, 0xCD, 0xDE, 0xEF, 0xFA, 0x12, 0x23};
FileStream file = File.Read("zipfile.zip");
byte[] buffer = new byte[file.Length];
file.ReadAllBytes(0, buffer, file.Length);

for(int i = 0; i < buffer.Length; i++)
{
     buffer[i] ^= key[i%key.Length];
}

// + wpisanie zawartości zaszyfrowanej do nowego pliku czy co tam chcesz.

2a - szyfrowanie zawartości tych plików ZIP (dalej pozostają prawidłowymi plikami ZIP)
To samo co 2 tylko używając dodatkowo GZipStream http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx

3 - szyfrowanie za pomocą frameworkowych metod a nie XOR-a
tak jak w 2, tylko zamiast for trzeba dać

var provider = new System.Security.Cryptography.RSACryptoServiceProvider();
provider.ImportParameters(your_rsa_key);

byte[] encryptedBytes = provider.Encrypt(buffer, true);

3a - Tak jak 3, zmiana analogicznie jak w 3.

0

Właśnie chodziło mi o tą 2. tylko tera podkreśla mi na czerwono: file.ReadAllBytes i File.Read.

0

Wystarczyłoby byte[] buffer = File.ReadAllBytes("zipfile.zip");

1 użytkowników online, w tym zalogowanych: 0, gości: 1