Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Основной цикл шифрования на SSE в четыре потока.

Читайте также:
  1. II. ОСНОВНОЙ ЭТАП
  2. III Построить графики амплитудных характеристик усилителя для четырех различных нагрузок и режима холостого хода, и определить динамический диапазон усилителя для каждого случая.
  3. VI. Список Основной РЕКОМЕНДУЕМОЙ
  4. Алгоритм RSA. Генерация ключей и функция шифрования
  5. Алгоритмы шифрования
  6. Асимметричные криптосистемы шифрования
  7. В Приложении помещают статью для реферирования, а также вспомогательные или дополнительные материалы, которые загромождают текст основной части.

 

SSE6, SSE7 содержат поочередно накопители1 и накопители2 (четыре накопителя по 4 байта каждый)

Сначала готовятся индексные регистры для работы коммутатора

- младшие тетрады в байтах маскируются

- старшие тетрады сначала сдвигаются на место младших и затем маскируются

Индексный регистр SSE2 содержит индексы младних тетрад 1,2 байта и индексы старших тетрад 3,4 байта.

Индексный регистр SSE3 содержит индексы младних тетрад 3,4 байта и индексы старших тетрад 1,2 байта.

Технологические маски содержатся в ОП. Маска имеет размер 16 байт, в комментариях указана маска только для одного потока, остальные три маски аналогичные.

После выборки через коммутаторы информации с узлов замен (регистры SSE8, SSE9, SSE10, SSE11). С каждого узла замены считывается две актуальные тетрады, остальные мусор.

Чтобы отсечь мусор считанная информация маскируется технологическими масками, отсекающими лишние тетрады. Маски имеют размер 16 байт, в комментарии показана маска для одного потока, остальные три потока имеют аналогичные маски.

Затем производится сборка тетрад в полное 32битное слово для каждого потока.

Собранное слово сдвигается циклически на 11 позиций влево, после чего складывается с накопителем1.

Циклический сдвиг выполнен на командах логического сдвига, поскольку в системе команд AVX отсутствуют команды ротации.

Пример кода не оптимизирован по быстродействию, но максимально удобен для понимания.

Ключи шифрования для каждого потока находятся в ОП.

 

Use64

macro zxmm kl

{

;/////подготовка блока замен 1-2байт

vpand xmm2,xmm5,[esp+80h]; 000000f0fh; маска м-тетрад 1b,2b

vpsrlq xmm3,xmm5,4;

vpand xmm13,xmm3,[esp+090h]; 00f0f0000h; маска с-тетрад 4b,3b

por xmm2,xmm13;

 

;/////подготовка блока замен 3-4байт

pand xmm3,[esp+0a0h]; 000000f0fh; маска c-тетрад 1б,2b

pand xmm5,[esp+0b0h]; 00f0f0000h; маска 4b-mт,3b-mt

por xmm3,xmm5;

 

;/////////блок замен 1-2 байты

vpshufb xmm12,xmm8,xmm2; блок замен замена 1б-мч, 4б-сч

pand xmm12,[esp]; 0f000000fh; маска 1b-мт,4-ct

vpshufb xmm13,xmm9,xmm2; блок замен замена 2б-мч, 3б-сч

pand xmm13,[esp+20h]; 000f00f00h; маска 2б-mt,3b-ct

;/////////блок замен 3-4 байты

vpshufb xmm14,xmm10,xmm3; блок замен замена 3б-мч, 2б-сч

pand xmm14,[esp+40h]; 0000ff000h; маска 2б-ст, 3bmt

vpshufb xmm15,xmm11,xmm3; блок замен замена 4б-мч, 1б-сч

pand xmm15,[esp+60h]; 00f0000f0h; маска 1b -ct, 4b-mt

 

;///////сборка тетрад

por xmm13,xmm12;

por xmm13,xmm14;

por xmm13,xmm15;

 

 

;//////////загрузка следующих ключей

movdqa xmm5,[esp+100h+kl*16];

}

 

;///////////////////////////////тестовый модуль 1 проход

macro c1 kl;

{

zxmm kl;

 

;/////циклический сдвиг на 11 влево

vpslld xmm12,xmm13,11; левый сдвиг на 11 позиций

psrld xmm13,21; правый сдвиг на 21 позицию

pxor xmm7,xmm12; суммирование заполнение и накопитель

pxor xmm7,xmm13; суммирование заполнение и накопитель

paddd xmm5,xmm7; сложить с ключом накопитель

 

}

 

;///////////////////////////////тестовый модуль 2 проход

macro c2 kl;

{

zxmm kl;

 

;/////циклический сдвиг на 11 влево

vpslld xmm12,xmm13,11; левый сдвиг на 11 позиций

psrld xmm13,21; правый сдвиг на 21 позицию

pxor xmm6,xmm12; суммирование заполнение и накопитель

pxor xmm6,xmm13; суммирование заполнение и накопитель

paddd xmm5,xmm6; сложить с ключом накопитель

}

 

 


Дата добавления: 2015-07-08; просмотров: 137 | Нарушение авторских прав


Читайте в этой же книге: Традиционная реализация ГОСТ 28147-89 | Многопоточная реализация ГОСТ 28147-89 | Использование SSE регистров и AVX команд современных процессоров для реализации ГОСТ 28147-89 | Выполнение этих требований позволит гарантировать полную изоляцию и неизменность программного кода криптопроцедур и используемой в них секретной информации. |
<== предыдущая страница | следующая страница ==>
Цена вопроса| Приложение №4.

mybiblioteka.su - 2015-2024 год. (0.015 сек.)