Jul. 21st, 2012

nsg21: (Default)
Написал небольшую программку для разделения секретного файла на несколько частей. Лежит на http://nsg.upor.net/sys/win/aont.htm , описание (на английском) -- там же. Основана на преобразовании типа "или-всё-или-ничего". (Преобразование не содержит секретной информации, типа пароля, и может быть легко обращено, но только при условии что доступны все байты. Если хотя бы часть преобразованного файла отсутствует или повреждена, то оставшаяся часть не может быть восстановлена даже частично.)

Собстванно, саму программку для преобразования одного файла в один файл я написал давно и быстро -- криптографические классы от .net делают эту задачу почти тривиальной. Трудность, довольно неожиданно, оказалась в том что мне нужно было не просто преобразование, а разделение результата на несколько (возможно неравных) файлов, и последующее их слияние при восстановлении.

Изначально я думал использовать для этого отдельную уже существующую утилиту (cut) с последущей склейкой частей с помощью "copy /b a+b+c d". Но это оказалось не совсем то. Во-первых, cut не умеет делить на несколько неравных частей. Я даже было написал свою утилиту (usplit, unequal split) как раз для этого. Но тут-то и выяснилось, что, во-вторых, использование двух команд для одной операции очень раздражает. Так мне пришлось вставлять операции разделения результата на части и склейки их при обратном преобразовании непосредственно в aont.

Как именно указывать размеры и количество частей? Как генерировать для них имена, если пользователь не указал их явно? Как указывать какие файлы и в каком порядке нужны для обратного преобразоывания? Какое имя использовать для восстановленного результата если не указано явно? Как отличить ситуацию когда указано несколько файлов и непонятно, то ли последнее имя -- это имя одной из частей, то ли имя результата.
При этом всё это должно быть "интуитивно", хотя бы для меня самого.

В общем, неинтеллектуальная часть занимает большую половину, всё как обычно.

Profile

nsg21: (Default)
nsg21

April 2024

S M T W T F S
 123456
7 8910111213
14151617181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 30th, 2025 10:03 pm
Powered by Dreamwidth Studios