Рейтинг:
2
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
И что же?
Вы знаете, как читать папку и ее вложенные папки, не так ли?