Jayamanickam Ответов: 1

Как сохранить весь файл в зашифрованном формате и скачать расшифрованный формат


Мы уже загружаем все типы документов в папку,но теперь мы хотим зашифровать файл при хранении и расшифровать при загрузке.

Что я уже пробовал:

Я уже храню файл в папке, но я не знаю, чтобы сохранить зашифрованный формат

1 Ответов

Рейтинг:
2

OriginalGriff

Начать здесь: Шифрование файлов C# - поиск в Google[^]


Jayamanickam

RijndaelManaged-это какой метод шифрования.. это AES или DES. Какой тип байта используется??

MadMyche

Вы всегда можете прочитать документацию, чтобы лучше понять класс и то, как он связан

This algorithm supports key lengths of 128, 192, or 256 bits; defaulting to 256 bits. This algorithm supports block sizes of 128, 192, or 256 bits; defaulting to 128 bits (Aes-compatible).

The Rijndael class is the predecessor of the Aes algorithm. You should use the Aes algorithm instead of Rijndael. For more information, see the entry The Differences Between Rijndael and AES in the .NET Security blog.


https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.rijndael?view=netframework-4.8#remarks

OriginalGriff

байт-это байт, это байт: это определенный размер памяти, который состоит из восьми битов и поэтому может содержать значения от 0 до 255 включительно. Там нет никакого "какого типа байт" участвует!

Jayamanickam

Я попробовал в google в соответствии с вашим руководством, я получил решение. но я столкнулся с другой проблемой, это только поддержка файла .txt, но мне нужны все типы документов, такие как .xls,. xlsx и более важный формат PDF-файла.

OriginalGriff

Нет, шифрование не заботится о том, что находится в файле - это просто поток байтов, независимо от того, является ли он TXT, XLS, XLSX, DOCX, DBF или EXE.
Все, что получает метод шифрования, - это поток двоичных данных и какой-то ключ-он не знает и не заботится о том, что содержат байты!

Jayamanickam

Шифрование Кода:

общественная статический недействительным EncryptFile(строка входной файл, строку выходной_файл)
{

пробовать
{

string password = @"myKey123"; // ваш ключ здесь
UnicodeEncoding UE = новое UnicodeEncoding();
byte[] key = UE.GetBytes(пароль);

string cryptFile = outputFile;
FileStream fsCrypt = новый файловый поток(cryptFile, FileMode.Создавать);

RijndaelManaged RMCrypto = новый RijndaelManaged();

CryptoStream cs = новый CryptoStream(fsCrypt,
RMCrypto.CreateEncryptor(ключ, ключ),
Криптостриммод.Писать);

Хранилище FileStream ФСИН = новый файловый поток(входной файл, содержит filemode.Открыть);

int data;
пока ((данные = ФСИН.ReadByte()) != -1)
cs.WriteByte((байт)данных);


ФСИН.Закрывать();
КС.Рядом();
fsCrypt.Закрывать();
}
ловить
{
//MessageBox.Показать("шифрование не удалось!", "ошибка");
}
}



Расшифровать Код:

частных статических недействительным DecryptFile(строка входной файл, строку выходной_файл)
{

{
string password = @"myKey123"; // ваш ключ здесь

UnicodeEncoding UE = новое UnicodeEncoding();
byte[] key = UE.GetBytes(пароль);

Хранилище FileStream fsCrypt = новый файловый поток(входной файл, содержит filemode.Открыть);

RijndaelManaged RMCrypto = новый RijndaelManaged();

CryptoStream cs = новый CryptoStream(fsCrypt,
RMCrypto.CreateDecryptor(ключ, ключ),
CryptoStreamMode.Читать);

FileStream fsOut = новый FileStream(outputFile, FileMode.Создавать);

int data;
пока ((данные = КС.ReadByte()) != -1)
фсаут.WriteByte((байт)данных);

фсаут.Закрывать();
КС.Рядом();
fsCrypt.Закрывать();

}
}



Я использовал приведенный выше код, но он не работает. пожалуйста, проводите меня...

OriginalGriff

"Это не работает" - одно из самых бесполезных описаний проблемы, которое мы получаем: оно абсолютно ничего не говорит нам о проблеме. Мы не знаем, получаете ли вы сообщение об ошибке, или неправильные данные, или даже что этот код успешно компилируется!
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы.
Итак, расскажите нам, что происходит, когда вы запускаете этот код, что вы ожидали, как вы проверили, что произошло. Помогите нам помочь вам!

Jayamanickam

Я использовал выше код для шифрования и дешифрования, он поддерживает только шифрование и дешифрование файлов .txt. В то же время я пытаюсь зашифровать файлы .PDF,.xls,.xlsx, которые не поддерживаются. Запуск с одним образцом PDF - файла попробуйте зашифровать после шифрования я открываю зашифрованный PDF-файл, показывая сообщение об ошибке "Adobe Acrobat Reader не может открыть файл test.pdf, потому что это либо не поддерживаемый тип файла, либо потому, что файл поврежден", как показано в этом сообщении. Я надеюсь, что вы можете понять scenerio.

OriginalGriff

Так что позвольте мне посмотреть, является ли то, что вы говорите, тем, что вы делаете:

1) чтение файла из "FileA"
2) зашифруйте его в "FileB"
3) попробуйте открыть "FileB" с помощью Adobe PDFReader.
4) жалуйтесь, что он не открывается.

Это зашифрованный файл: он больше не похож на PDF-файл ни в каком смысле, форме или средствах.

Шифрование вашим приложением - это не то же самое, что "создание зашифрованного PDF-файла" - последнее создает PDF-файл, содержащий зашифрованные данные, в то время как вы шифруете весь файл.

Чтобы создать зашифрованный PDF-файл, который можно прочитать, начните здесь:
https://www.google.com/search?safe=off&sxsrf=ACYBGNQa1KFIpFD0B7meqPx99s_tIpWihq%3A1577948572916&ei=nJUNXsXJN4Wy8gKm7Iv4BA&q=encrypt+pdf+c%23&oq=encrypt+pdf+c%23&gs_l=psy-ab.3..0j0i22i30l6.6593.9232..9823...0.2..0.80.368.5......0....1..gws-wiz.......0i71j0i7i30j0i20i263.2Szrl9qNz_E&ved=0ahUKEwjFh6bBrOTmAhUFmVwKHSb2Ak8q4dudcas&uact=5

Jayamanickam

Большое вам спасибо..
И еще помощь нужна. Не могли бы вы подсказать мне, что я хочу зашифровать внутри папки файлы, у меня нет большого представления об этом.
Например: Main FolderA->ReportFolder->Test.Pdf,Test.Xls,Test.Xlsx
Главная папка->AccountFolder->Test1.Pdf,Test21.xls

Как это. Поэтому как только я зашифровал основную папку все подпапки и файлы должны быть зашифрованы

OriginalGriff

И что же?
Вы знаете, как читать папку и ее вложенные папки, не так ли?