Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - RC6 - Реализация алгоритма RC6 на языке C#14 июня 2011Купить детское автокресло коляска cybexonlineshop.ru. Оглавление: 1. RC6 2. Детали RC6 3. Шифрование и расшифрование 4. Реализация алгоритма RC6 на языке C# 5. Безопасность 6. Оценка аппаратных средств 7. Выполнение 8. Лицензирование В данной реализации используется размер слова W = 64 бита, что соответствует размеру блока в 128 бит. Число раундов R = 16. Ключ K определяется пользователем самостоятельно. using System; using System.IO; using System.Collections.Generic; namespace RC6 { class RC6 { // Константы для операций свига public const int W = 32; public const int R = 16; // Переменные для работы с файлами public Byte fileData; public uint fileLength; // Список расшифрованных / рашифрованных данных public List<Byte> resultData = new List<Byte>; // Крипто-ключ public UInt32 key = new UInt32; // Функция записи данных в файл public void WriteByteArrayToFile { try { FileStream fs = new FileStream; BinaryWriter bw = new BinaryWriter; for bw.Write; bw.Close; fs.Close; } catch { // Опущено для реализации под различными типами проектов } } // Функция чтения данных из файла public Byte ReadByteArrayFromFile { Byte buffer = null; try { FileStream fs = new FileStream; BinaryReader br = new BinaryReader; long numBytes = new FileInfo.Length; buffer = br.ReadBytesnumBytes); br.Close; fs.Close; } catch { // Опущено для реализации под различными типами проектов } return buffer; } // Функция сдвига вправо public UInt32 RightShift { return | )); } // Функция сдвига влево public UInt32 LeftShift { return | )); } // Функция определения числа сдвигов public int OffsetAmount { int nLgw = W) / Math.Log); dwVar = dwVar << ; dwVar = dwVar >> ; return dwVar; } // Функция генерации ключа public void KeyGen { UInt32 P32 = 0xB7E15163; UInt32 Q32 = 0x9E3779B9; UInt32 i, A, B; UInt32 dwByteOne, dwByteTwo, dwByteThree, dwByteFour; dwByteOne = dwKey >> 24; dwByteTwo = dwKey >> 8; dwByteTwo = dwByteTwo & 0x0010; dwByteThree = dwKey << 8; dwByteThree = dwByteThree & 0x0100; dwByteFour = dwKey << 24; dwKey = dwByteOne | dwByteTwo | dwByteThree | dwByteFour; key = P32; for key = key + Q32; i = A = B = 0; int v = 3 * Math.Max; for { A = key = LeftShift); B = dwKey = LeftShift)); i = % ; } } // Функция преобразования массива UInt32 к списку байт public void ConvertFromUInt32ToByteArray { List<byte> results = new List<byte>; foreach { byte converted = BitConverter.GetBytes; results.AddRange; } // Формирование списка зашифрованных / расшифрванных байт данных resultData.AddRange; } // Функия преобразования массива байт в массив UInt32 public UInt32 ConvertFromByteArrayToUIn32 { List<UInt32> results = new List<UInt32>; // Размер блока конвертируемых данных. Читаем по 16 байт. int length = position + 16; for { byte temp = new byte; for { if temp = array; else temp = 0x00; // заполняем недостающие блоки в случае достижения // конца файла } results.Add); } return results.ToArray; } // Функция расшифровки файла public void DecodeFile { UInt32 pdwTemp; for { pdwTemp = ConvertFromByteArrayToUIn32; pdwTemp = ; pdwTemp = ; for { UInt32 t = LeftShift), OffsetAmountW) / Math.Log))); UInt32 u = LeftShift), OffsetAmountW) / Math.Log))); pdwTemp = u)) + key); pdwTemp = t)) + key); UInt32 temp = pdwTemp; pdwTemp = pdwTemp; pdwTemp = pdwTemp; pdwTemp = pdwTemp; pdwTemp = temp; } pdwTemp = ; pdwTemp = ; // Конвертируем в выходной массив расшифрованных данных ConvertFromUInt32ToByteArray; } pdwTemp = null; } // Функция шифрования файла public void EncodeFile { UInt32 pdwTemp; for { pdwTemp = ConvertFromByteArrayToUIn32; pdwTemp = ; pdwTemp = ; for { UInt32 temp = pdwTemp; pdwTemp = pdwTemp; pdwTemp = pdwTemp; pdwTemp = pdwTemp; pdwTemp = temp; UInt32 t = LeftShift), OffsetAmountW) / Math.Log))); UInt32 u = LeftShift), OffsetAmountW) / Math.Log))); pdwTemp = , OffsetAmountu))) ^ t; pdwTemp = , OffsetAmountt))) ^ u; } pdwTemp = ; pdwTemp = ; // Конвертируем в выходной массив зашифрованных данных ConvertFromUInt32ToByteArray; } pdwTemp = null; } } } Просмотров: 10170
|