Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> шифровать файл 
:(
    Опции темы
nankko
Дата 31.8.2007, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



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

http://forum.vingrad.ru/forum/topic-168369.html

поиск результатов не дал

требуется зашифровать файл.без всяких винавторизаций и прочего.просто есть файл и его нужно зашифровать.

т.е. имеется строка(она же ключь шифрования) например 'zxcvbn'

как с помошью ее зашифровать файл

заранее спасибо/
PM MAIL   Вверх
SMART32
Дата 31.8.2007, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 29.8.2007

Репутация: нет
Всего: нет



А это смотря какой алгоритм шифрования ты хочешь использовать..)) 
PM MAIL   Вверх
Experimenter
Дата 31.8.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 8
Всего: 17



Что значит, ответ не подошел? Можешь подробнее описать?


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
nankko
Дата 31.8.2007, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



алгоритм? ну наверно с симетричным ключом... а так... ну в длинной  128 ...

почему не подошел? прогнал крипт и енкрипт - да,файлик зашифрован,но для данного вин логина! авторизацию в проге я сделал свою. мне нуна чтоб войдя я разшифровал файлик а выйдя зашифровал... не зависимо от каких-то параметров винды
PM MAIL   Вверх
Sartorius
Дата 31.8.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



nankko, где ваша фантазия? Если криптостойкость не критична, то можно хоть XOR посимвольно со строкой этой делать. 
PM MAIL ICQ   Вверх
nankko
Дата 31.8.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



алгоритм? ну наверно с симетричным ключом... а так... ну в длинной  128 ...

почему не подошел? прогнал крипт и енкрипт - да,файлик зашифрован,но для данного вин логина! авторизацию в проге я сделал свою. мне нуна чтоб войдя я разшифровал файлик а выйдя зашифровал... не зависимо от каких-то параметров винды

Добавлено через 3 минуты и 42 секунды
Цитата(Sartorius @ 31.8.2007,  11:40)
nankko, где ваша фантазия? Если криптостойкость не критична, то можно хоть XOR посимвольно со строкой этой делать.


ну во первых речь идет о файле. по-поводу фантазии. да,абсолютно верно. наверно все таки предпочтительней использовать RSA алгоритм с симметричным ключом.так чтоб наверняка. в MSDN нашел некоторые криптопровайдеры. но чет не врубаюсь как с их помощью зашифровать файлик  smile )))
заранее спасибо за ответ.так много откликов. я польщен smile  smile  smile 
PM MAIL   Вверх
SMART32
Дата 31.8.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 29.8.2007

Репутация: нет
Всего: нет



Цитата

nankko, где ваша фантазия? Если криптостойкость не критична, то можно хоть XOR посимвольно со строкой этой делать. 

Именно! Можно такое замутить, что и ЦРУ не взломает smile 
PM MAIL   Вверх
nankko
Дата 31.8.2007, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



господа,давайте не будем уходить в полемику... smile  дайте плз пример)
PM MAIL   Вверх
Experimenter
Дата 31.8.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 8
Всего: 17



Как это - RSA-алгоритм с симметричным ключом????? RSA --- асимметричное шифрование и не годится для большого объема данных (байтов), чаще всего оно используется для электронно-цифровых подписей. Чтоб шифровать содержимое файла, подойдет алгоритм DES.


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
SpaceSpace
Дата 31.8.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 10.4.2007
Где: Самара

Репутация: 2
Всего: 10



  вот тебе крутая расшифровалка

Код

using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;
Код

 // параметры командной строки
            string inFileName = args[0];
            string outFileName = args[1];
            string password = args[2];

            // Create the password key
            byte[] saltValueBytes = Encoding.ASCII.GetBytes("This is my sa1t");
            Rfc2898DeriveBytes passwordKey = new Rfc2898DeriveBytes(password, saltValueBytes);

            // Create the algorithm and specify the key and IV
            RijndaelManaged alg = new RijndaelManaged();
            alg.Key = passwordKey.GetBytes(alg.KeySize / 8);
            alg.IV = passwordKey.GetBytes(alg.BlockSize / 8);

            // Read the encrypted file into fileData
            ICryptoTransform decryptor = alg.CreateDecryptor();
            FileStream inFile = new FileStream(inFileName, FileMode.Open, FileAccess.Read);
            CryptoStream decryptStream = new CryptoStream(inFile, decryptor, CryptoStreamMode.Read);
            byte[] fileData = new byte[inFile.Length];
            decryptStream.Read(fileData, 0, (int)inFile.Length);

            // Write the contents of the unencrypted file
            FileStream outFile = new FileStream(outFileName, FileMode.OpenOrCreate, FileAccess.Write);
            outFile.Write(fileData, 0, fileData.Length);

            // Close the file handles
            decryptStream.Close();
            inFile.Close();
            outFile.Close();


а это шифровалка
 
Код

// Read the command-line parameters
            string inFileName = args[0];
            string outFileName = args[1];
            string password = args[2];

            // Create the password key
            byte[] saltValueBytes  = Encoding.ASCII.GetBytes("This is my sa1t");
            Rfc2898DeriveBytes passwordKey = new Rfc2898DeriveBytes(password, saltValueBytes);

            // Create the algorithm and specify the key and IV
            RijndaelManaged alg = new RijndaelManaged();
            alg.Key = passwordKey.GetBytes(alg.KeySize/8);
            alg.IV = passwordKey.GetBytes(alg.BlockSize/8);

            // Read the unencrypted file into fileData
            FileStream inFile = new FileStream(inFileName, FileMode.Open, FileAccess.Read);
            byte[] fileData = new byte[inFile.Length];
            inFile.Read(fileData, 0, (int)inFile.Length);
            
            // Create the ICryptoTransform and CryptoStream object 
            ICryptoTransform encryptor = alg.CreateEncryptor();
            FileStream outFile = new FileStream(outFileName, FileMode.OpenOrCreate, FileAccess.Write);
            CryptoStream encryptStream = new CryptoStream(outFile, encryptor, CryptoStreamMode.Write);

            // Write the contents to the CryptoStream
            encryptStream.Write(fileData, 0, fileData.Length);

            // Close the file handles
            encryptStream.Close();
            inFile.Close();
            outFile.Close();


Это сообщение отредактировал(а) SpaceSpace - 31.8.2007, 14:00


--------------------
Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение.
70-565
MCPD Enterprise 3.5 
PM MAIL   Вверх
nankko
Дата 31.8.2007, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



Цитата

Как это - RSA-алгоритм с симметричным ключом????? RSA --- асимметричное шифрование и не годится для большого объема данных (байтов), чаще всего оно используется для электронно-цифровых подписей. Чтоб шифровать содержимое файла, подойдет алгоритм DES.

угу совсем из головы вылетело... DES, AES )))

2SpaceSpace 
спасибо! вечерком попробую - отпишусь!


PM MAIL   Вверх
Experimenter
Дата 31.8.2007, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 8
Всего: 17



Щас я на работе, а из дома подкину примерчик, но это будет нескоро. Начни с этого:
Код

            string request = "Мои данные для шифрования";                       

            DESCryptoServiceProvider d = new DESCryptoServiceProvider();

            d.Mode = CipherMode.CBC;
            d.Padding = PaddingMode.Zeros;
            d.IV = new byte[] { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10 };
            d.Key = Encoding.Unicode.GetBytes("test_key");

            byte[] buffer = Encoding.GetEncoding(1251).GetBytes(request);

            MemoryStream ms = new MemoryStream(buffer);
            CryptoStream cs = new CryptoStream(ms, d.CreateEncryptor(), CryptoStreamMode.Write);
            cs.Write(buffer, 0, buffer.Length);
            cs.Flush();           
            cs.Close();
            ms.Close();
            Console.WriteLine(Encoding.GetEncoding(1251).GetString(buffer));
            Console.ReadLine();

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


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
nankko
Дата 31.8.2007, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



Цитата

Щас я на работе, а из дома подкину примерчик, но это будет нескоро. Начни с этого:


буду благодарен! 

Цитата

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


а вот это врядли, т.к. юзаю аксес через провайдера соотвествуюшего.погу конечно открывать БД и шифровать всею инфу в таблице.но имхо - не решение. проще шифрануть файл как обьект!


PM MAIL   Вверх
Experimenter
Дата 31.8.2007, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 8
Всего: 17



типа DES-шифрование
Код

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = "", inFile = "infile.txt", encFile = "encfile.txt"; //infile.txt уже должен существовать
            FileStream fs = null;
            StreamReader sr = null;
            StreamWriter sw;
            CryptoStream cs = null;
            
            DESCryptoServiceProvider d = new DESCryptoServiceProvider();
            d.Mode = CipherMode.CBC;
            d.Padding = PaddingMode.Zeros;
            byte[] buffer;
            d.IV = new byte[] { 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80 };
            d.Key = Encoding.ASCII.GetBytes("TEST_KEY");

            try
            {
                fs = new FileStream(inFile, FileMode.Open);
                sr = new StreamReader(fs, Encoding.GetEncoding(1251));
                input = sr.ReadToEnd();
                sr.Close();
                fs.Close();
                while (input.Length % 8 > 0) input += " ";
                buffer = Encoding.GetEncoding(1251).GetBytes(input);
                Console.WriteLine("input data:\r\n" + input + "\r\n");

                MemoryStream ms = new MemoryStream(buffer);
                cs = new CryptoStream(ms, d.CreateEncryptor(), CryptoStreamMode.Write);
                cs.Write(buffer, 0, buffer.Length);
                cs.Flush();
                ms.Close();

                string strBuffer = BitConverter.ToString(buffer).Replace("-", "");
                Console.WriteLine("encrypted and modified data\r\n" + strBuffer + "\r\n");
                buffer = null;

                fs = new FileStream(encFile, FileMode.Create);
                sw = new StreamWriter(fs);
                sw.Write(strBuffer);
                sw.Flush();
                sw.Close();
                fs.Close();

                fs = new FileStream(encFile, FileMode.Open);
                sr = new StreamReader(fs);
                string strEncBytes = sr.ReadToEnd();
                string atomic = "";
                byte[] encBytes = new byte[strEncBytes.Length / 2];

                for (int i = 0; i < strEncBytes.Length; i++)
                {
                    if (i % 2 != 0) continue;
                    atomic = strEncBytes.Substring(i, 1) + strEncBytes.Substring(i + 1, 1);
                    encBytes[i / 2] = Byte.Parse(atomic, System.Globalization.NumberStyles.HexNumber);
                }

                ms = new MemoryStream(encBytes);
                cs = new CryptoStream(ms, d.CreateDecryptor(), CryptoStreamMode.Read);
                sr = new StreamReader(cs, Encoding.GetEncoding(1251));
                string requestBody = sr.ReadToEnd();
                sr.Close();
                ms.Close();
                encBytes = null;
                Console.WriteLine("output data:\r\n" + requestBody);               
            }           
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadLine();            
        }
    }
}



--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
Experimenter
Дата 2.9.2007, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 8
Всего: 17



nankko, ну и как, разобрался?


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0846 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.