Разработка программного обеспечения для формирования базы данных для государственной итоговой аттестации 9 классов

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



В±ыли модифицированы, либо были помечены на удаление с момента SRT. Результат работы этого запроса обозначим через DB1_Change. Для DB2 выполним аналогичный запрос, заменяя DB1 на DB2. Результат работы этого запроса обозначим через DB2_Change.

Для того чтобы найти состояние записи во всех базах сразу следует исполнить запрос вида:

Select_moment_relation(DB1_Change.TransTime,DB2_Change.TransTime) as moment_relation(DB1_Change.ChType, 0) as St_DB1,(DB2_Change.ChType, 0) as St_DB2,_Change.DBID as DBID,_Change.RID as RID_Change full outer join DB2_Change

On ((DB1_Change.DBID = DB2_Change.DBID) and (DB1_Change.RID = DB2_Change.RID))

Результат этого запроса обозначим через General_State. Следующий запрос выдаст необходимые действия для разрешения конфликта записей:

Select_Table.action1,_Table.action2_State.DBID as DBID,_State.RID as RID

General_State inner join Res_Table on ((General_State.moment_relation = Res_Table.time_relation) and (General_State.St_DB1 = Res_Table.state1) and (General_State.St_DB2 = Res_Table.state2))

Основываясь на результатах этой выборки, следует предпринять конкретные действия по устранению конфликтов версий записей. Если разрешение конфликтов версий завершилось удачей, то вычисляется новое значение для последней успешной репликации SRT1. Далее следует выполнить запрос для DB1 вида:

Update

DB1.RTable1

Set

ChType = 0,= SRT1

(TransTime > SRT)

Для DB2 выполним аналогичный запрос, заменяя DB1 на DB2.

2.5Стандарт AES

Стандарт AES(Advanced Encryption Standard) является стандартом шифрования США, принятым в 2000-ом году. Он специфицирует алгоритм Rijndael. Этот алгоритм представляет собой симметричный блочный шифр, который работает с блоками данных длиной 128 бит и использует ключи длиной 128, 192 и 256 бит (версии AES-128; AES-192 и AES-256). Сам алгоритм может работать и с другими длинами блоков данных и ключей, но эта возможность в стандарт не вошла. При использовании 128-битного ключа для взлома шифрования по заявлению правительства США потребуется 149 триллионов лет. Биты данных нумеруются с нуля, начиная со старших. В AES основным является полиномиальное представлением кодов. Так байт {01100011} следует представлять как: x6 + x5 + x + 1. Алгоритм AES производит операции над двумерными массивами байт, называемыми структурами (state). Структура состоит из 4 рядов по Nb байт. Nb равно длине блока, деленной на 32 (в данном стандарте Nb=4). Это позволяет обозначать структуру как sr,c или s[r,c], где 0?r<4 и 0?с<4.

Входной код (in), который является последовательностью 16 байт можно представить как:

[r,c] = in[r +4c]

При реализации алгоритма AES используются операции сложения байт (по модулю 2 = XOR) и умножения. В алгоритме AES при умножении байтов используется неприводимый многочлен

m(x) = x8 + x4 + x3 + x + 1[1]

Вычисление произведения М байтов {b1} на {b2} здесь выполняется согласно следующему алгоритму

M=[{b1}?{b2}] mod m(x).[2]

В этом случае обратная величина байта равна

{b}-1 ={b} mod m(x)[3]

для умножения полубайтов (коды длиной 4 бита) используется неприводимый полином

(x) = x4 + 1

Вычисление произведения М полубайтов {a} на {b} здесь выполняется следующим образом

M=[{a}?{b}] mod m2(x).[2a]

M представляет собой полубайт d. Операцию умножения полубайтов {a} на {b} можно записать в матричном виде:

[4]

Как было сказано выше длины ключей Nk (длина, измеренная в 32 битных словах) могут принимать значения 4, 6 или 8 (для AES-128, -192 и -256, соответственно). Число итераций Nr (round), реализуемых в алгоритме AES, составляет соответственно 10, 12 и 14.

2.6Шифрование AES

При запуске алгоритма шифрования входной блок данных копируется в массив state. После первоначального добавления к state ключа массив state преобразуется с помощью функции циклической обработки Nr раз (последний цикл несколько отличается от предыдущих). Результат преобразования заносится в выходной массив. Описание алгоритма в С-подобном представлении отображено на рис. 1. Преобразования SubByte(), ShiftRows(), MixColumns() и AddRoundKey() осуществляют обработку массива state. Массив w[i] описан ниже.

(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])state[4,Nb]= in(state, w[0, Nb-1])round = 1 step 1 to Nr-1(state)(state)(state)(state, w[round*Nb, (round+1)*Nb-1])for(state)(state)(state, w[Nr*Nb, (Nr+1)*Nb-1]) = state

end

Рис. 1. Псевдокод, реализующий процедуру шифрования

2.6.1Преобразование SubByte()

Преобразование SubByte() является нелинейной подстановкой байтов, которое работает независимо для каждого байта State и использует таблицу подстановок S. Эта замена включает в себя две операции:

1.Каждый байт заменяется на обратный мультипликативный (см. формулу 3). Байт {00} преобразуется сам в себя.

2.Для каждого байта осуществляется аффинное преобразование в поле GF(2), задаваемое формулой

[1.1]

2.6.2Преобразование ShiftRows()

В преобразованиях ShiftRows() байты в последних трех рядах State циклически сдвигаются на разное число байт. Первый ряд (r=0) не сдвигается. Преобразование ShiftRows() осуществляется следующим образом

для 0<r<4 и 0?c<Nb[1.3]

где величина сдвига shift(r,Nb) зависит от номера ряда r следующим образом:

shift(1,4)=1; shift(2,4)=2; shift(3,4)=3

2.6.3Преобразование MixColumns()

Преобразование MixColumns() обрабатывает State колонка за колонкой, каждая из колонок представляет собой 4-битный код. Колонки рассматриваются как полиномы над полем GF(28). Колонка умножается на фиксированный полином {a}={03}x3+{01}x2+{01}x+ {02} по модулю x4+1 (см. формулу 2а).

2.6.4Преобразование AddRoundKey()

В преобразовании AddRoundKey() к State добавляется ключ итерации (Round Key; побитовая операция XOR). Операция производится для каждого байта State.

2.6.5Процедура расширения ключа

Ключи итерации вычисляются на основе ключа шифрования с помощью пр