- •Содержание
- •1 Теоретические основы криптографического алгоритма Блюма–Блюма–Шуба и линейного конгруэнтного метода
- •1.1 Линейный конгруэнтный метод
- •2 Разработка программы для проведения экспериментов
- •3 Экспериментальное исследование
- •4. Примеры оформления таблиц
- •Список использованных источников
- •Приложение a Исходный текст программной реализации алгоритма Блюма–Блюма–Шуба
Список использованных источников
1 Генерация случайных и псевдослучайных последовательностей [Электронный ресурс]. – URL: http://www.hardline.ru/selfteachers/Info/Security/Protection_to_information /6/Index5.htm (дата обращения: 14.05.2012).
2 Линейный конгруэнтный метод [Электронный ресурс]. – URL: http://ru.wikipedia.org /wiki/Линейный_конгруэнтный_метод (дата обращения: 1.04.2012).
3 Запечников С.В. Криптографические протоколы и их применение в финансовой и коммерческой деятельности : учебное пособие для вузов. – М.: Горячая линияТелеком, 2007. – 320 с.
4 Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы : учеб. пособие для физ.-мат. специальностей вузов / Под общ. ред. Н.И. Тихонова. – 2–е изд. – М.: Физматлит; Лаб. базовых знаний; СПб.: Нев. диалект, 2002. – 630 с.
5 Факультет менеджмента СПбГУ [Электронный ресурс]. − URL: http://www.som.pu.ru (дата обращения: 20.03.2012).
6 Blum L., Blum M., Shub M. A Simple Unpredictable Pseudo–Random Number Generator // SIAM Journal on Computing. – Volume 15. – 1986. – P. 364-383.
7 Шнайер Б. Прикладная криптография. – М.: Триумф, 2002. – 816 с.
Приложение a Исходный текст программной реализации алгоритма Блюма–Блюма–Шуба
# –*– coding: utf–8 –*–
import wx #WX
import random
import matplotlib as mpl
mpl.rcParams['font.family'] = 'fantasy'
mpl.rcParams['font.fantasy'] = 'Verdana, Arial'
import matplotlib.pyplot as plt
import time
import os
import glob
sampleList=list
razmY=400
razmX=razmY*1.67 #размер окна
def ProstChisl(self):
n=10000
a = range(n+1)
a[1] = 0
lst = []
i = 2
while i <= n:
if ((a[i] != 0 )&( a[i]%4==3)):
lst.append(str(a[i]))
for j in xrange(i, n+1, i):
a[j] = 0
i += 1
return lst
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, –1, u"Сравнение Алгоритма Блюма–Блюма–Шуба и Линейного Конгруэнтного Метода", pos=((wx.ScreenDC().GetSize().x–razmX)/2,(wx.ScreenDC().GetSize().y–razmY)/2), size=(razmX, razmY),style= wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)
panel = wx.Panel(self, –1)
panel.SetBackgroundColour("white")
tr=self.GetSize()
tr.x=razmX
tr.y=razmY
self.MinSize=tr
sb = wx.StaticBox(panel, label=u'Выберите параметры', pos=(5, 5), size=(420, 175))
sbs = wx.StaticBoxSizer(sb, orient=wx.VERTICAL)
self.srPT=1
self.srDMN=1
self.srBBSHLKM=1
self.nam=wx.StaticText(panel, –1, u"Начальное число Xo:", pos=(10, 25))
sbs.Add(self.nam)
self.ishData=wx.TextCtrl(panel, –1, value = "57", pos=(10, 45),size=wx.DefaultSize, style=wx.TE_LEFT | wx.TE_PROCESS_ENTER)
self.Bind(wx.EVT_TEXT, self.ErIsx, self.ishData)
wx.StaticText(panel, –1, u"Длина последовательности D:", pos=(10, 75))
self.dlinPosl=wx.TextCtrl(panel, –1, value = "200", pos=(10, 95),size=wx.DefaultSize, style=wx.TE_LEFT | wx.TE_PROCESS_ENTER)
self.Bind(wx.EVT_TEXT, self.ErPos, self.dlinPosl)
wx.StaticText(panel, –1, u"Модуль М=p*q :", pos=(10, 125))
self.sampleList=ProstChisl(self)
p=random.randint(1,len(self.sampleList))
q=random.randint(1,len(self.sampleList))