/// <summary> /// Получить список получателей зашифрованного файла /// </summary> /// <param name="file">Зашифрованный файл</param> /// <remarks>wftesto.exe g file.cry</remarks> public static int GetAbonents(string file) { int ret; if ((ret = Wbotho.CryptoInit("", "")) > 0) { Console.WriteLine("CryptoInit error : {0}", ret); return(ret); } ushort count; ushort[] list; if ((ret = Wbotho.GetCryptKeysF(file, out count, out list, "")) > 0) { Console.WriteLine("GetCryptKeysF error : {0}", ret); return(ret); } Wbotho.CryptoDone(); Console.WriteLine("File {0} is encrypted for these abonents :", file); //новое: исправлено слово for (int i = 0; i < count; i++) { Console.WriteLine("ID{0} - {1}", i + 1, list[i]); } Wbotho.FreeMemory(list); return(ret); }
/// <summary> /// Пакетное расшифрование файлов /// </summary> /// <param name="pathIn">Папка с исходными файлами</param> /// <param name="mask">Маска файлов для обработки (*.*)</param> /// <param name="pathOut">Папка для расшифрованных файлов (d)</param> /// <param name="ext">Новое расширение для расшифрованных файлов (.*)</param> /// <param name="pub">Строка пути к каталогу c OPENKEY (\Pub)</param> /// <param name="id">Номер отправителя (XXXXSSSSSS)</param> /// <param name="to">Номер получателя (XXXXSSSSSS)</param> /// <param name="move">Удалять исходные файлы в случае успеха</param> /// <returns>0 или код последней ошибки</returns> public static int BulkDecrypt(string pathIn, string mask, string pathOut, string ext, string pub, string id, string to, bool move) { Wbotho.CryptoInit(pub, pub); int ret; byte[] key = new byte[304]; if ((ret = Wbotho.ExtractKey(pub, id, key)) > 0) { return(ret); } Directory.CreateDirectory(pathOut); bool changeExt = !ext.Equals(".*"); foreach (string file in Directory.GetFiles(pathIn, mask)) { string fileOut = Path.Combine(pathOut, changeExt ? Path.GetFileNameWithoutExtension(file) + ext : Path.GetFileName(file)); int r = Wbotho.DeCryptFileEx(file, fileOut, to, key); if (r == 0 && move && File.Exists(fileOut)) { File.Delete(file); } else { ret = r; } } Wbotho.CryptoDone(); return(ret); }
/// <summary> /// Расшифровать файл /// </summary> /// <param name="fileIn">Исходный файл</param> /// <param name="fileOut">Расшифрованный файл</param> /// <param name="sec">Путь к секретному ключу</param> /// <param name="pub">Путь к открытым ключам</param> /// <param name="id">Номер получателя</param> /// <remarks>wftesto.exe d file.cry file.txt c:\key c:\pub 1810</remarks> public static int Decrypt(string fileIn, string fileOut, string sec, string pub, string id) { int ret; if ((ret = Wbotho.CryptoInit(sec, pub)) > 0) { Console.WriteLine("CryptoInit error : {0}", ret); return(ret); } if ((ret = Posh.Decrypt(fileIn, fileOut, id)) > 0) { Console.WriteLine("DeCryptFile error : {0}", ret); return(ret); } Wbotho.CryptoDone(); Console.WriteLine("File {0} decrypted to {1}", fileIn, fileOut); return(ret); }
/// <summary> /// Зашифровать файл /// </summary> /// <param name="fileIn">Исходный файл</param> /// <param name="fileOut">Зашифрованный файл</param> /// <param name="sec">Путь к секретному ключу</param> /// <param name="pub">Путь к открытым ключам</param> /// <param name="id">Номер отправителя (серия опционально)</param> /// <param name="to">Номера получателей (той же серии) ...</param> /// <remarks> /// wftesto.exe e file.txt file.cry a:\ c:\pub 0001 0002 /// wftesto.exe e file.txt file.cry a:\ c:\pub 0001 0003 0004 /// wftesto.exe e file.txt file.cry c:\key\ c:\pub 0005[999999] 0006 0007 /// </remarks> public static int Encrypt(string fileIn, string fileOut, string sec, string pub, string id, params string[] to) { int ret; if ((ret = Wbotho.CryptoInit(sec, pub)) > 0) { Console.WriteLine("CryptoInit error : {0}", ret); return(ret); } if ((ret = Posh.Encrypt(fileIn, fileOut, id, to)) > 0) { Console.WriteLine("EnCryptFile error : {0}", ret); return(ret); } Wbotho.CryptoDone(); Console.WriteLine("File {0} encrypted to {1}", fileIn, fileOut); return(ret); }
/// <summary> /// Пакетное зашифрование файлов /// </summary> /// <param name="pathIn">Папка с исходными файлами</param> /// <param name="mask">Маска файлов для обработки (*.*)</param> /// <param name="pathOut">Папка для зашифрованных файлов (e)</param> /// <param name="ext">Новое расширение для зашифрованных файлов (.*)</param> /// <param name="pub">Строка пути к каталогу c OPENKEY (\Pub)</param> /// <param name="id">Номер отправителя (XXXXSSSSSS)</param> /// <param name="to">Номер получателя (XXXXSSSSSS)</param> /// <param name="move">Удалять исходные файлы в случае успеха</param> /// <returns>0 или код последней ошибки</returns> public static int BulkEncrypt(string pathIn, string mask, string pathOut, string ext, string pub, string id, string to, bool move) { Wbotho.CryptoInit(pub, pub); int ret; byte[] key = new byte[304]; if ((ret = Wbotho.ExtractKey(pub, to, key)) > 0) { return(ret); } IntPtr[] ptr = new IntPtr[] { Marshal.AllocHGlobal(304) }; Marshal.Copy(key, 0, ptr[0], 304); Directory.CreateDirectory(pathOut); bool changeExt = !ext.Equals(".*"); foreach (string file in Directory.GetFiles(pathIn, mask)) { string fileOut = Path.Combine(pathOut, changeExt ? Path.GetFileNameWithoutExtension(file) + ext : Path.GetFileName(file)); int r = Wbotho.EnCryptFileEx(file, fileOut, id, ptr, 1, 0); if (r == 0 && move && File.Exists(fileOut)) { File.Delete(file); } else { ret = r; } } Marshal.FreeHGlobal(ptr[0]); Wbotho.CryptoDone(); return(ret); }