<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ilianko.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mimi</id>
	<title>Ilianko - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://ilianko.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mimi"/>
	<link rel="alternate" type="text/html" href="https://ilianko.com/index.php/Special:Contributions/Mimi"/>
	<updated>2026-04-07T02:25:11Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.33.1</generator>
	<entry>
		<id>https://ilianko.com/index.php?title=%D0%A3%D0%BF%D1%80%D0%B0%D0%B6%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_0._IPv4.&amp;diff=1512</id>
		<title>Упражнение 0. IPv4.</title>
		<link rel="alternate" type="text/html" href="https://ilianko.com/index.php?title=%D0%A3%D0%BF%D1%80%D0%B0%D0%B6%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_0._IPv4.&amp;diff=1512"/>
		<updated>2011-08-15T10:27:31Z</updated>

		<summary type="html">&lt;p&gt;Mimi: /* IP Адрес */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Двоично в десетично ==&lt;br /&gt;
'''Задача 1.''' Да се преобразуват числата двоични в десетични ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:bin2dec.png]]&lt;br /&gt;
&lt;br /&gt;
== Десетично  в двоично ==&lt;br /&gt;
'''Задача 2.''' Да се преобразуват числата десетични в двоични ==&lt;br /&gt;
&lt;br /&gt;
[[Image:dec2bin.png]]&lt;br /&gt;
&lt;br /&gt;
== IP Адрес ==&lt;br /&gt;
'''Задача 3.''' Запишете IP (internet protocol) адреса и мрежовата маска (subnet mask) на вашия компютър. Преобразувайте адреса и мрежовата маска от десетичен в двоичен формат. Използвайте операцията логическо умножение (И/AND) за да изведете адреса на мрежата. Запишете broadcast адреса за мрежата. Използвайте таблицата 1, за да визуализирате резултатите.&lt;br /&gt;
&lt;br /&gt;
'' '''Упътване:''' Използвайте командите &amp;lt;code&amp;gt;c:\&amp;gt;ipconfig &amp;lt;/code&amp;gt; и  &amp;lt;code&amp;gt;~$ifconfig&amp;lt;/code&amp;gt; за да видите информация за мрежовите настройки съответно за windows и Unix базирани системи.''&lt;br /&gt;
&lt;br /&gt;
[[Image:tab1.png]]&lt;br /&gt;
&lt;br /&gt;
Отговорете на следните въпроси:&lt;br /&gt;
*Колко бита е целият IP адрес:&lt;br /&gt;
*Колко единици е маската:&lt;br /&gt;
*Колко бита определят мрежата (подмрежата): &lt;br /&gt;
*Колко бита определят номера на хоста:&lt;br /&gt;
*Каква е  форма на IP адреса:&lt;br /&gt;
*Колко възможни хоста могат да бъдат конфигурирани в зададената мрежа:&lt;br /&gt;
 jhkjhjkhjkhk&lt;br /&gt;
&lt;br /&gt;
== DNS, Default Gatway ==&lt;br /&gt;
'''Задача 4.''' Приемаме, че мрежовите настройки на вашия компютър са конфигурирани автоматично чрез [[DHCP]] ([[DHCP Dynamic Host Configuration Protocol]]).  Запишете адресите на Default Gatеway (шлюз по подразбиране) и [[DNS]] адресите ([[DNS|Domain Name System]]).&lt;br /&gt;
'' '''Упътване:''' Използвайте командата &amp;lt;code&amp;gt; c:\&amp;gt;ipconfig /all&amp;lt;/code&amp;gt; за да видите всички настройки в Windows или командите &amp;lt;code&amp;gt;~$route, ~$less /etc/resolv.conf &amp;lt;/code&amp;gt; за linux.''&lt;br /&gt;
*DNS (1):                           		        &lt;br /&gt;
*DNS (2):&lt;br /&gt;
*Default Gateway: &lt;br /&gt;
&lt;br /&gt;
'''Важно:''' IP адреса на дefault gateway винаги трябва да е от същата мрежа, на която е настроен и IP адреса на мрежовата карта. Ако има повече от една мрежова карта, то се настройва default gateway само за едната карта.&lt;br /&gt;
&lt;br /&gt;
== IP Subnets ==&lt;br /&gt;
'''Задача 5.''' Попълнете таблицата за следните адреси:&lt;br /&gt;
 20.21.3.99/26&lt;br /&gt;
[[Image:tab1.png]]&lt;br /&gt;
&lt;br /&gt;
*Колко възможни хоста могат да бъдат конфигурирани в зададената мрежа:&lt;br /&gt;
&lt;br /&gt;
 20.21.3.99/13&lt;br /&gt;
[[Image:tab1.png]]&lt;br /&gt;
&lt;br /&gt;
*Колко възможни хоста могат да бъдат конфигурирани в зададената мрежа:&lt;br /&gt;
&lt;br /&gt;
== Aдресно пространство ==&lt;br /&gt;
&lt;br /&gt;
'''Задача 6.''' Закупили сте си мрежа с адрес 197.15.22.0/24. Трябва да разделите мрежовото пространство между различни отдели. Нужни са ви поне 4 подмрежи с минимум по 25 хоста във всяка подмрежа. Отговорете:&lt;br /&gt;
*Колко е максималния брой на IP адреси за хостове преди разделянето:&lt;br /&gt;
*Колко бита минимум са ви необходими, за да адресирате всички крайни устройства:  &lt;br /&gt;
*Колко бита ще ви останат за да направите подмрежите:&lt;br /&gt;
*Как ще изглежда мрежовата маска в десетичен формат/ двоичен, така че да имате възможно най-голям брой мрежи:&lt;br /&gt;
 _____._____._____._____&lt;br /&gt;
&lt;br /&gt;
[[Image:tab2.png]]&lt;br /&gt;
&lt;br /&gt;
== Мрежови инструменти - netsh ==&lt;br /&gt;
&lt;br /&gt;
'''Задача 7.''' Тествайте следните команди в Windows за ръчно конфигуриране на мрежовите настройки през command promt.&lt;br /&gt;
&lt;br /&gt;
Настройка IP адрес&lt;br /&gt;
*netsh interface ip set address name=&amp;quot;Local Area Connection&amp;quot; static 192.168.1.19 255.255.255.0 192.168.1.1 1&lt;br /&gt;
*netsh interface ip set address &amp;quot;Local Area Connection&amp;quot; dhcp&lt;br /&gt;
&lt;br /&gt;
Настройка DNS&lt;br /&gt;
*netsh interface ip set dns &amp;quot;Local Area Connection&amp;quot; static 212.39.90.42&lt;br /&gt;
*netsh interface ip set dns &amp;quot;Local Area Connection&amp;quot; dhcp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Домашна работа ==&lt;br /&gt;
&lt;br /&gt;
Задача 8. Създайте два batch file-а за настройка на мрежовия интерфейс в Windows:&lt;br /&gt;
*Първият да дава настройки за ползване на DHCP.&lt;br /&gt;
*Вторият да задава статични настройки със следните параметри:&lt;br /&gt;
** DNS: yy.1.1.1&lt;br /&gt;
** IP address: yy.1.1.xx /zz където   Запишете съдържанието на файловете:&lt;br /&gt;
** Defualt gateway: произволен от мрежата на зададения IP адрес.&lt;br /&gt;
&lt;br /&gt;
Където:&lt;br /&gt;
*yy са първите две цифри от факултетния ви номер;&lt;br /&gt;
*xx са последните две цифри от факултетния ви номер;&lt;br /&gt;
*zz е сумата от последните три цифри на факултетния ви номер.&lt;br /&gt;
&lt;br /&gt;
[[Category:Компютърни мрежи]]&lt;br /&gt;
[[Category:Практика 3/3 мрежи]]&lt;/div&gt;</summary>
		<author><name>Mimi</name></author>
		
	</entry>
	<entry>
		<id>https://ilianko.com/index.php?title=%D0%A3%D0%BF%D1%80%D0%B0%D0%B6%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_10._%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2_%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81&amp;diff=1511</id>
		<title>Упражнение 10. Цифров подпис</title>
		<link rel="alternate" type="text/html" href="https://ilianko.com/index.php?title=%D0%A3%D0%BF%D1%80%D0%B0%D0%B6%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_10._%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2_%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81&amp;diff=1511"/>
		<updated>2011-08-15T10:24:26Z</updated>

		<summary type="html">&lt;p&gt;Mimi: /* RSA пример */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основни понятия ==&lt;br /&gt;
&lt;br /&gt;
Първите три понятия, които трябва да знаем, за да можем да разберем какво представлява сигурността при ползване на цифрови услуги са: идентификация, автентификация и оторизация.&lt;br /&gt;
&lt;br /&gt;
*'''Идентификация''' – Установяване на нашата самоличност. Това е личността, която сме или за която се представяме. Както в реалния свят, така и в цифровия може да използваме фалшива самоличност. Като цифровата самоличност това просто е потребителското име – то е уникална (за организацията, която ни го издава) комбинация от символи и може да служи за достъп до мрежата, компютрите или услугите на тази организация.  &lt;br /&gt;
*'''Автентификация''' – Удостоверяване на истинността на личността. Това е всичко, което доказва и с което доказваме, че личността, за която се представяме, сме наистина ние. В реалния свят може да представим лична карта или шофьорска книжка, в цифровия може да имаме парола или цифров подпис. &lt;br /&gt;
*'''Оторизация''' – Упълномощаване. Потребителят на дадената система  има присвоена самоличност. В зависимост от политиката за сигурност и точката на достъп се използват различни методи за автентификация. Следващата стъпка е определяне на нивото и правата на достъп, с които разполага въпросната личност в системата. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Презентация Цифров/Електронен Подспис ==&lt;br /&gt;
&lt;br /&gt;
[http://ilianko.com/images/others/DS.pdf Презентация Цифров/Електронен Подспис]&lt;br /&gt;
&lt;br /&gt;
== Модулна аритметика ==&lt;br /&gt;
'''Задача 1.''' Да се намери остатъкът на числото 3^256 разделено на 4 ( 3^256%4=?):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Задача 2.''' Да се напише програма, която да намира остатъкът на числото 85^256 разделено на 83 ( 85^256%83=?):&lt;br /&gt;
&lt;br /&gt;
== RSA пример ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Задача 3.''' Да се тества програмата. Допълнете програмата така, че да генерира и избира автоматично стойност за експонентата на публичния ключ&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
/*********************************************************************\&lt;br /&gt;
 * Title: RSA&lt;br /&gt;
 * Description: Генериране на ключове, криптиране и декриптиране с RSA &lt;br /&gt;
 * Edited by: ilianko&lt;br /&gt;
 * Idea:  http://cppgm.blogspot.com/2008/01/rsa-algorithm.html&lt;br /&gt;
 * &lt;br /&gt;
\*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int r; // pRivate key exponent&lt;br /&gt;
int u; // pUblic key exponent&lt;br /&gt;
int phi; // phi(s) = (v-1)*(t-1) - Euler's totient function&lt;br /&gt;
int M; // Message&lt;br /&gt;
int C; // encrypted message&lt;br /&gt;
int s; // modulus for both the public and private keys, модул (делител) на ключовете&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int check()&lt;br /&gt;
{&lt;br /&gt;
  int i, iMax;&lt;br /&gt;
  iMax = ( u &amp;gt; phi) ? u : phi;&lt;br /&gt;
  for( i=3; i &amp;lt; iMax ; i = i+2)&lt;br /&gt;
  {&lt;br /&gt;
    if(u%i==0 &amp;amp;&amp;amp; phi%i==0) return 1;&lt;br /&gt;
  }&lt;br /&gt;
  return 0;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void encrypt()&lt;br /&gt;
{&lt;br /&gt;
  int i;&lt;br /&gt;
  &lt;br /&gt;
  C = 1;&lt;br /&gt;
  for(i=0; i &amp;lt; u; i++)&lt;br /&gt;
    C = C*M%s; //  modular arithmetic&lt;br /&gt;
  &lt;br /&gt;
  C = C%s;&lt;br /&gt;
  printf( &amp;quot;\n\tEncrypted keyword : %d&amp;quot;, C );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void decrypt()&lt;br /&gt;
{&lt;br /&gt;
  int i;&lt;br /&gt;
  M = 1;&lt;br /&gt;
  for(i=0; i &amp;lt; r;i++)&lt;br /&gt;
    M=M*C%s;&lt;br /&gt;
  M = M%s;&lt;br /&gt;
  printf(&amp;quot;\n\tDecrypted keyword : %d&amp;quot;,M);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  int v,t; /* Изходящи праметри, избират се две произволни прости числа,&lt;br /&gt;
            * колкото по-големи, толкова &amp;quot;по-изчислителноемко&amp;quot; е разбиването. */&lt;br /&gt;
  int temp = 0;&lt;br /&gt;
  printf(&amp;quot;Enter Two Prime Numbers\t: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d%d&amp;quot;,&amp;amp;v,&amp;amp;t);&lt;br /&gt;
  &lt;br /&gt;
  s = v*t; // модул на ключовете&lt;br /&gt;
  phi=(v-1)*(t-1); // Euler's totient function&lt;br /&gt;
  &lt;br /&gt;
  printf(&amp;quot;\n\t Phi(s)\t= %i&amp;quot;, phi);&lt;br /&gt;
  &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
    printf(&amp;quot;\n\n Enter public key exponent\t: &amp;quot;);&lt;br /&gt;
    scanf(&amp;quot;%d&amp;quot;,&amp;amp;u);&lt;br /&gt;
  }while( check() ); //Проверка дали избраната експонента е относително проста&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  r = 1;&lt;br /&gt;
  while(temp != 1 )&lt;br /&gt;
  {&lt;br /&gt;
    temp = (r*u)%phi;&lt;br /&gt;
    r++;&lt;br /&gt;
  };&lt;br /&gt;
  r--;&lt;br /&gt;
  &lt;br /&gt;
  printf(&amp;quot;\n\tPublic Key\t: {%d,%d}&amp;quot;,u,s);&lt;br /&gt;
  printf(&amp;quot;\n\tPrivate Key\t: {%d,%d}&amp;quot;,r,s);&lt;br /&gt;
  &lt;br /&gt;
  printf(&amp;quot;\n\nEnter The Plain Text\t: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;,&amp;amp;M);&lt;br /&gt;
  encrypt();&lt;br /&gt;
  &lt;br /&gt;
  printf(&amp;quot;\n\nEnter the Cipher text\t: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;,&amp;amp;C);&lt;br /&gt;
  decrypt();&lt;br /&gt;
  &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Цифровият подпис не е [[Упражнение 8. Scanner|сканиран подпис]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Компютърна периферия]]&lt;/div&gt;</summary>
		<author><name>Mimi</name></author>
		
	</entry>
	<entry>
		<id>https://ilianko.com/index.php?title=%D0%A3%D0%BF%D1%80%D0%B0%D0%B6%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_10._%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2_%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81&amp;diff=1510</id>
		<title>Упражнение 10. Цифров подпис</title>
		<link rel="alternate" type="text/html" href="https://ilianko.com/index.php?title=%D0%A3%D0%BF%D1%80%D0%B0%D0%B6%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_10._%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2_%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81&amp;diff=1510"/>
		<updated>2011-08-15T10:23:22Z</updated>

		<summary type="html">&lt;p&gt;Mimi: /* RSA пример */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основни понятия ==&lt;br /&gt;
&lt;br /&gt;
Първите три понятия, които трябва да знаем, за да можем да разберем какво представлява сигурността при ползване на цифрови услуги са: идентификация, автентификация и оторизация.&lt;br /&gt;
&lt;br /&gt;
*'''Идентификация''' – Установяване на нашата самоличност. Това е личността, която сме или за която се представяме. Както в реалния свят, така и в цифровия може да използваме фалшива самоличност. Като цифровата самоличност това просто е потребителското име – то е уникална (за организацията, която ни го издава) комбинация от символи и може да служи за достъп до мрежата, компютрите или услугите на тази организация.  &lt;br /&gt;
*'''Автентификация''' – Удостоверяване на истинността на личността. Това е всичко, което доказва и с което доказваме, че личността, за която се представяме, сме наистина ние. В реалния свят може да представим лична карта или шофьорска книжка, в цифровия може да имаме парола или цифров подпис. &lt;br /&gt;
*'''Оторизация''' – Упълномощаване. Потребителят на дадената система  има присвоена самоличност. В зависимост от политиката за сигурност и точката на достъп се използват различни методи за автентификация. Следващата стъпка е определяне на нивото и правата на достъп, с които разполага въпросната личност в системата. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Презентация Цифров/Електронен Подспис ==&lt;br /&gt;
&lt;br /&gt;
[http://ilianko.com/images/others/DS.pdf Презентация Цифров/Електронен Подспис]&lt;br /&gt;
&lt;br /&gt;
== Модулна аритметика ==&lt;br /&gt;
'''Задача 1.''' Да се намери остатъкът на числото 3^256 разделено на 4 ( 3^256%4=?):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Задача 2.''' Да се напише програма, която да намира остатъкът на числото 85^256 разделено на 83 ( 85^256%83=?):&lt;br /&gt;
&lt;br /&gt;
== RSA пример ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Задача 3.''' Да се тества програмата. Допълнете програмата така, че да генерира и избира автоматично стойност за експонентата на публичния ключ&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
/*********************************************************************\&lt;br /&gt;
 * Title: RSA&lt;br /&gt;
 * Description: Генериране на ключове, криптиране и декриптиране с RSA &lt;br /&gt;
 * Edited by: ilianko&lt;br /&gt;
 * Idea:  http://cppgm.blogspot.com/2008/01/rsa-algorithm.html&lt;br /&gt;
 * &lt;br /&gt;
\*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int r; // pRivate key exponent&lt;br /&gt;
int u; // pUblic key exponent&lt;br /&gt;
int phi; // phi(s) = (v-1)*(t-1) - Euler's totient function&lt;br /&gt;
int M; // Message&lt;br /&gt;
int C; // encrypted message&lt;br /&gt;
int s; // modulus for both the public and private keys, модул (делител) на ключовете&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int check()&lt;br /&gt;
{&lt;br /&gt;
  int i, iMax;&lt;br /&gt;
  iMax = ( u &amp;gt; phi) ? u : phi;&lt;br /&gt;
  for( i=3; i &amp;lt; iMax ; i = i+2)&lt;br /&gt;
  {&lt;br /&gt;
    if(u%i==0 &amp;amp;&amp;amp; phi%i==0) return 1;&lt;br /&gt;
  }&lt;br /&gt;
  return 0;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void encrypt()&lt;br /&gt;
{&lt;br /&gt;
  int i;&lt;br /&gt;
  &lt;br /&gt;
  C = 1;&lt;br /&gt;
  for(i=0; i &amp;lt; u; i++)&lt;br /&gt;
    C = C*M%s; //  modular arithmetic&lt;br /&gt;
  &lt;br /&gt;
  C = C%s;&lt;br /&gt;
  printf( &amp;quot;\n\tEncrypted keyword : %d&amp;quot;, C );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void decrypt()&lt;br /&gt;
{&lt;br /&gt;
  int i;&lt;br /&gt;
  M = 1;&lt;br /&gt;
  for(i=0; i &amp;lt; r;i++)&lt;br /&gt;
    M=M*C%s;&lt;br /&gt;
  M = M%s;&lt;br /&gt;
  printf(&amp;quot;\n\tDecrypted keyword : %d&amp;quot;,M);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  int v,t; /* Изходящи праметри, избират се две произволни прости числа,&lt;br /&gt;
            * колкото по-големи, толкова &amp;quot;по-изчислителноемко&amp;quot; е разбиването. */&lt;br /&gt;
  int temp = 0;&lt;br /&gt;
  printf(&amp;quot;Enter Two Prime Numbers\t: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d%d&amp;quot;,&amp;amp;v,&amp;amp;t);&lt;br /&gt;
  &lt;br /&gt;
  s = v*t; // модул на ключовете&lt;br /&gt;
  phi=(v-1)*(t-1); // Euler's totient function&lt;br /&gt;
  &lt;br /&gt;
  printf(&amp;quot;\n\t Phi(s)\t= %i&amp;quot;, phi);&lt;br /&gt;
  &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
    printf(&amp;quot;\n\n Enter public key exponent\t: &amp;quot;);&lt;br /&gt;
    scanf(&amp;quot;%d&amp;quot;,&amp;amp;u);&lt;br /&gt;
  }while( check() ); //Проверка дали избраната експонента е относително проста&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  r = 1;&lt;br /&gt;
  while(temp != 1 )&lt;br /&gt;
  {&lt;br /&gt;
    temp = (r*u)%phi;&lt;br /&gt;
    r++;&lt;br /&gt;
  };&lt;br /&gt;
  r--;&lt;br /&gt;
  &lt;br /&gt;
  printf(&amp;quot;\n\tPublic Key\t: {%d,%d}&amp;quot;,u,s);&lt;br /&gt;
  printf(&amp;quot;\n\tPrivate Key\t: {%d,%d}&amp;quot;,r,s);&lt;br /&gt;
  &lt;br /&gt;
  printf(&amp;quot;\n\nEnter The Plain Text\t: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;,&amp;amp;M);&lt;br /&gt;
  encrypt();&lt;br /&gt;
  &lt;br /&gt;
  printf(&amp;quot;\n\nEnter the Cipher text\t: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;,&amp;amp;C);&lt;br /&gt;
  decrypt();&lt;br /&gt;
  &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Цифровият подпис не е [[Упражнение 8. Scanner&lt;br /&gt;
|сканиран подпис]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Компютърна периферия]]&lt;/div&gt;</summary>
		<author><name>Mimi</name></author>
		
	</entry>
	<entry>
		<id>https://ilianko.com/index.php?title=%D0%A3%D0%BF%D1%80%D0%B0%D0%B6%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_10._%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2_%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81&amp;diff=1509</id>
		<title>Упражнение 10. Цифров подпис</title>
		<link rel="alternate" type="text/html" href="https://ilianko.com/index.php?title=%D0%A3%D0%BF%D1%80%D0%B0%D0%B6%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_10._%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2_%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81&amp;diff=1509"/>
		<updated>2011-08-15T10:18:46Z</updated>

		<summary type="html">&lt;p&gt;Mimi: /* RSA пример */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основни понятия ==&lt;br /&gt;
&lt;br /&gt;
Първите три понятия, които трябва да знаем, за да можем да разберем какво представлява сигурността при ползване на цифрови услуги са: идентификация, автентификация и оторизация.&lt;br /&gt;
&lt;br /&gt;
*'''Идентификация''' – Установяване на нашата самоличност. Това е личността, която сме или за която се представяме. Както в реалния свят, така и в цифровия може да използваме фалшива самоличност. Като цифровата самоличност това просто е потребителското име – то е уникална (за организацията, която ни го издава) комбинация от символи и може да служи за достъп до мрежата, компютрите или услугите на тази организация.  &lt;br /&gt;
*'''Автентификация''' – Удостоверяване на истинността на личността. Това е всичко, което доказва и с което доказваме, че личността, за която се представяме, сме наистина ние. В реалния свят може да представим лична карта или шофьорска книжка, в цифровия може да имаме парола или цифров подпис. &lt;br /&gt;
*'''Оторизация''' – Упълномощаване. Потребителят на дадената система  има присвоена самоличност. В зависимост от политиката за сигурност и точката на достъп се използват различни методи за автентификация. Следващата стъпка е определяне на нивото и правата на достъп, с които разполага въпросната личност в системата. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Презентация Цифров/Електронен Подспис ==&lt;br /&gt;
&lt;br /&gt;
[http://ilianko.com/images/others/DS.pdf Презентация Цифров/Електронен Подспис]&lt;br /&gt;
&lt;br /&gt;
== Модулна аритметика ==&lt;br /&gt;
'''Задача 1.''' Да се намери остатъкът на числото 3^256 разделено на 4 ( 3^256%4=?):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Задача 2.''' Да се напише програма, която да намира остатъкът на числото 85^256 разделено на 83 ( 85^256%83=?):&lt;br /&gt;
&lt;br /&gt;
== RSA пример ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Задача 3.''' Да се тества програмата. Допълнете програмата така, че да генерира и избира автоматично стойност за експонентата на публичния ключ&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
/*********************************************************************\&lt;br /&gt;
 * Title: RSA&lt;br /&gt;
 * Description: Генериране на ключове, криптиране и декриптиране с RSA &lt;br /&gt;
 * Edited by: ilianko&lt;br /&gt;
 * Idea:  http://cppgm.blogspot.com/2008/01/rsa-algorithm.html&lt;br /&gt;
 * &lt;br /&gt;
\*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int r; // pRivate key exponent&lt;br /&gt;
int u; // pUblic key exponent&lt;br /&gt;
int phi; // phi(s) = (v-1)*(t-1) - Euler's totient function&lt;br /&gt;
int M; // Message&lt;br /&gt;
int C; // encrypted message&lt;br /&gt;
int s; // modulus for both the public and private keys, модул (делител) на ключовете&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int check()&lt;br /&gt;
{&lt;br /&gt;
  int i, iMax;&lt;br /&gt;
  iMax = ( u &amp;gt; phi) ? u : phi;&lt;br /&gt;
  for( i=3; i &amp;lt; iMax ; i = i+2)&lt;br /&gt;
  {&lt;br /&gt;
    if(u%i==0 &amp;amp;&amp;amp; phi%i==0) return 1;&lt;br /&gt;
  }&lt;br /&gt;
  return 0;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void encrypt()&lt;br /&gt;
{&lt;br /&gt;
  int i;&lt;br /&gt;
  &lt;br /&gt;
  C = 1;&lt;br /&gt;
  for(i=0; i &amp;lt; u; i++)&lt;br /&gt;
    C = C*M%s; //  modular arithmetic&lt;br /&gt;
  &lt;br /&gt;
  C = C%s;&lt;br /&gt;
  printf( &amp;quot;\n\tEncrypted keyword : %d&amp;quot;, C );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void decrypt()&lt;br /&gt;
{&lt;br /&gt;
  int i;&lt;br /&gt;
  M = 1;&lt;br /&gt;
  for(i=0; i &amp;lt; r;i++)&lt;br /&gt;
    M=M*C%s;&lt;br /&gt;
  M = M%s;&lt;br /&gt;
  printf(&amp;quot;\n\tDecrypted keyword : %d&amp;quot;,M);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  int v,t; /* Изходящи праметри, избират се две произволни прости числа,&lt;br /&gt;
            * колкото по-големи, толкова &amp;quot;по-изчислителноемко&amp;quot; е разбиването. */&lt;br /&gt;
  int temp = 0;&lt;br /&gt;
  printf(&amp;quot;Enter Two Prime Numbers\t: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d%d&amp;quot;,&amp;amp;v,&amp;amp;t);&lt;br /&gt;
  &lt;br /&gt;
  s = v*t; // модул на ключовете&lt;br /&gt;
  phi=(v-1)*(t-1); // Euler's totient function&lt;br /&gt;
  &lt;br /&gt;
  printf(&amp;quot;\n\t Phi(s)\t= %i&amp;quot;, phi);&lt;br /&gt;
  &lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
    printf(&amp;quot;\n\n Enter public key exponent\t: &amp;quot;);&lt;br /&gt;
    scanf(&amp;quot;%d&amp;quot;,&amp;amp;u);&lt;br /&gt;
  }while( check() ); //Проверка дали избраната експонента е относително проста&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  r = 1;&lt;br /&gt;
  while(temp != 1 )&lt;br /&gt;
  {&lt;br /&gt;
    temp = (r*u)%phi;&lt;br /&gt;
    r++;&lt;br /&gt;
  };&lt;br /&gt;
  r--;&lt;br /&gt;
  &lt;br /&gt;
  printf(&amp;quot;\n\tPublic Key\t: {%d,%d}&amp;quot;,u,s);&lt;br /&gt;
  printf(&amp;quot;\n\tPrivate Key\t: {%d,%d}&amp;quot;,r,s);&lt;br /&gt;
  &lt;br /&gt;
  printf(&amp;quot;\n\nEnter The Plain Text\t: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;,&amp;amp;M);&lt;br /&gt;
  encrypt();&lt;br /&gt;
  &lt;br /&gt;
  printf(&amp;quot;\n\nEnter the Cipher text\t: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;,&amp;amp;C);&lt;br /&gt;
  decrypt();&lt;br /&gt;
  &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Компютърна периферия]]&lt;/div&gt;</summary>
		<author><name>Mimi</name></author>
		
	</entry>
</feed>