<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>algoritma arşivleri - Ertan Dönmez</title>
	<atom:link href="https://www.ertandonmez.org/tag/algoritma/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>Ertan Dönmez Kişisel Blog Sitesi.</description>
	<lastBuildDate>Sat, 24 May 2014 13:29:57 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>
	<item>
		<title>Panda 4.0 Güncellemesi Yayınlandı</title>
		<link>https://www.ertandonmez.org/panda-4-0-guncellemesi-yayinlandi/</link>
					<comments>https://www.ertandonmez.org/panda-4-0-guncellemesi-yayinlandi/#comments</comments>
		
		<dc:creator><![CDATA[Ertan]]></dc:creator>
		<pubDate>Sat, 24 May 2014 13:29:57 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[algoritma]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google arama sonuçları]]></category>
		<category><![CDATA[kaliteli İçerik]]></category>
		<category><![CDATA[panda]]></category>
		<category><![CDATA[panda 4.0]]></category>
		<category><![CDATA[panda 4.0 etkileri]]></category>
		<category><![CDATA[panda 4.0 güncellemesi nedir]]></category>
		<guid isPermaLink="false">https://www.ertandonmez.org/?p=8634</guid>

					<description><![CDATA[<p>Merhaba arkadaşlar. Bir çoğunuzun Penguen algoritmasını beklediği şu sıralarda Google amcanın Panda 4.0&#8216;ı yayınlaması herkeste bir soğuk duş etkisi yarattı. Matt dayımız Twitter hesabında güncelleme konusunda resmi bir duyuru yaptı ve herkesi şoke etti. Şahsen uzun bir süredir gelişmeleri takip edemesemde 1 haftadır takibe başladım ve Panda 4.0&#8216;ı biraz analiz etmeye çalıştım. Şuanda Panda 4.0&#8216;ün [&#8230;]</p>
<p><a href="https://www.ertandonmez.org/panda-4-0-guncellemesi-yayinlandi/">Panda 4.0 Güncellemesi Yayınlandı</a> yazısı ilk önce <a href="https://www.ertandonmez.org">Ertan Dönmez</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[<p><img fetchpriority="high" decoding="async" class="alignleft size-medium wp-image-8650" alt="google-panda-4-0-guncellemesi" src="https://www.ertandonmez.org/wp-content/uploads/2014/05/google-panda-4-0-guncellemesi-300x181.jpg" width="300" height="181" srcset="https://www.ertandonmez.org/wp-content/uploads/2014/05/google-panda-4-0-guncellemesi-300x181.jpg 300w, https://www.ertandonmez.org/wp-content/uploads/2014/05/google-panda-4-0-guncellemesi.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" />Merhaba arkadaşlar. Bir çoğunuzun <strong>Penguen algoritması</strong>nı beklediği şu sıralarda Google amcanın <strong>Panda 4.0</strong>&#8216;ı yayınlaması herkeste bir soğuk duş etkisi yarattı. Matt dayımız Twitter hesabında güncelleme konusunda resmi bir duyuru yaptı ve herkesi şoke etti. Şahsen uzun bir süredir gelişmeleri takip edemesemde 1 haftadır takibe başladım ve <strong>Panda 4.0</strong>&#8216;ı biraz analiz etmeye çalıştım.<br />
Şuanda <strong>Panda 4.0</strong>&#8216;ün vurduğu bir sistemimizi yakalayamadım, inceleme fırsatım olmadı ama kurumsal ve büyük firmalardan çöküntü yaşayanlara biraz bakma fırsatım oldu. İlerleyen günlerde bu konuda farklı analizler yapıp sizlere buradan yayınlayacağım.</p>
<blockquote class="twitter-tweet" lang="tr">
<p>Google is rolling out our Panda 4.0 update starting today.</p>
<p>&mdash; Matt Cutts (@mattcutts) <a href="https://twitter.com/mattcutts/statuses/468891756982185985">20 Mayıs 2014</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script><br />
Şimdi Matt Cutts dayıoğlusu Panda 4.0 ile neler getireceğini yazmış, ama gel gelelim hep standart şeyler.<br />
<strong>&#8220;Kalitesi düşük ve içerik hırsızı çöp sitelerin Google arama motorunda üst sıralarda yer almasını önlemek üzerine geliştirilmiş bir algoritma. Burada hedeflenen şey kaliteli içeriği kalitesizden ayırıp ön planda göstermek ve kullanıcıya kesin bilgi yanında kaliteli sistemide sunmak.&#8221;</strong><br />
Peki her seferinde böyle deniyor olan birşey varmı? Tabiki 3 5 site etkileniyor yine yenileri türeyecek ki bunun önüne geçilmesi imkansız gibi birşey. Yaklaşık 130 milyar site olan bir dünyada okadar siteyi takip edebilecek bir yazılım, güncelleme, algoritma vb şey yapılamaz.<br />
<strong>Peki Panda 4.0&#8217;den korunmak için neler yapmak gerek;</strong><br />
*Güncel siteler daha üst konumlara yerleşecek. Bunun için en az 1 2 içerik günlük olarak sitenize girmeye çalışın.<br />
*Tasarımınızda bulunan gereksiz kodlamalardan kurtulun ve kendinize has bir tasarım ortaya çıkarın.<br />
*Sayfalarınızda bulunan içeriklerde ve sayfa yapılarında &#8220;meta tag&#8221;ler kesinlikle farklı olmalı, tekrar yapmayın ve her sayfanıza kategorinize özel &#8220;tag&#8221; kullanın.<br />
*Paylaşım yaptığınız yazı ile alakasız bir etiketiniz varsa bunları kaldırın, sırf hit çekmek için kullanıcı yanıltmak olarak görünen bu sistem ceza sebebi. (Bişey olmaz demeyin, şikayet edilirse kesinlikle ceza alıyorsunuz.)<br />
*Siteleriniz için mümkün oldukça okunabilir ve paylaşımı arttırılabilecek olan içerikler üretmelisiniz. Bu yazılar kısa olmamalı, kullanıcı okuyabilmeli ve paylaşabileceği türden yazılar olmalıdır.<br />
*Siteleriniz için kesinlikle mobil tasarım yapın, çünkü mobil geleceğin en büyük sektörü. Şimdiden ele almalısınız bu sizin için erken bir avantaj olacak.<br />
*Tasarımınızı kullanıcıların rahat dolaşabileceği şekilde dizayn edin ve sitenize girenler nekadar çok zaman geçirirse sizin açınızdan okadar verimli olacaktır.<br />
** Belkide en önemli son 2 maddeden ilki kesinlikle sitenizden farklı içerikte sitelerden link almayın, bunu yapan birçok büyük firma çöküşte şuanda. Benimi anlayacak Google diyorsunuz ama eğer ki Panda 4.0&#8217;a yakalanırsanız geri dönüşü çok uzun vadede olacaktır ve siteniz heba olabilir. Black hat herzamanki gibi buradada etken madde kesinlikle önerilmiyor.<br />
** En önemli diyebileceğimiz şey &#8220;Sosyal Medya&#8221;.. Sosyal medya&#8217;ya inanılmaz bir yönelim yapmalısınız. Sitenizde paylaştığınız içerik sosyal medya platformlarında da paylaşılabilir yönde olmalı. Özellikle Twitter &amp; Facebook beğeni ve paylaşım butonları, bunların yanı sıra içeriğinizi Google+&#8217;da paylaşmanız ve kullanıcıların bu bağlantıları okuyup sizin sitenizde zaman geçirmeleri ve farklı sosyal medya url&#8217;lerinden sitenize yönlendirilen kullanıcılar kesinlikle sizin için çok çok büyük bir + kazandıracaktır.<br />
Benden size öneriler neler olabilir&#8230;<br />
Öncelikle sitenize özel tasarımınız olacak, bunun yanında siteniz tüm sosyal medya siteleri ile bağlantılı olacak. Facebook &#8211; Twitter &#8211; Google+ şu 3 sistemi sürekli kullanacaksınız. Sitenize sadece ana sayfaya kelimenizde link almanız yanlış. Sitenin alt sayfaları güçsüz ise hiçbir verim alamazsınız. WordPress siteniz varsa gerekirse 10 tane ana sayfaya link alacağınıza 3 ana sayfa 7 taneyide 7 farklı kategoriye link almalısınız. Mobil tasarımınız olsun, tasarım sade ve kullanıcıların rahat gezebileceği şekilde olmalı. Bunun yanında sitenizde yazacağınız içerikler gerçekten okuyanın kendinden geçmesini sağlamalı. Hani makalelere 200 kelimesi 1.5 TL diye yazanlar değil gerekirse para verin hergün 5 içerik girdireceğinize 200 kelime, hergün 1 içerik girin ama 500 kelime olsun. Sitenizde bulunan konularda nekadar çok yorum bulunursa bu okadar canlılık katacaktır sisteminize. Panda 4.0 ülkemize geçte gelebilir net bir yazı göremedim ben.<br />
Makaleyi çalıyorsanız eğer kaynak belirtin canlarım ciğerlerim..<br />
Selametle..</p>
<p><a href="https://www.ertandonmez.org/panda-4-0-guncellemesi-yayinlandi/">Panda 4.0 Güncellemesi Yayınlandı</a> yazısı ilk önce <a href="https://www.ertandonmez.org">Ertan Dönmez</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ertandonmez.org/panda-4-0-guncellemesi-yayinlandi/feed/</wfw:commentRss>
			<slash:comments>21</slash:comments>
		
		
			</item>
		<item>
		<title>Rsa Şifreleme Algoritması</title>
		<link>https://www.ertandonmez.org/rsa-sifreleme-algoritmasi/</link>
					<comments>https://www.ertandonmez.org/rsa-sifreleme-algoritmasi/#respond</comments>
		
		<dc:creator><![CDATA[Ertan]]></dc:creator>
		<pubDate>Sat, 13 Mar 2010 00:09:39 +0000</pubDate>
				<category><![CDATA[Kriptoloji]]></category>
		<category><![CDATA[algoritma]]></category>
		<category><![CDATA[rsa şifreleme]]></category>
		<category><![CDATA[rsa şifreleme algoritması]]></category>
		<guid isPermaLink="false">https://www.ertandonmez.org/?p=174</guid>

					<description><![CDATA[<p>RSA algoritması, Amerika’ da 1983 yılında MIT’ten patent almıştır. Bu patent 21 Eylül 2000 de son bulmuştur. Ancak patenti daha önce bir uygulamaya ait olduğu için bir başka ülkede patent alınamaz. Bir genel anahtarlı şifreleme tekniği olan RSA, çok büyük tamsayıları oluşturma ve bu sayıları işleminin zorluğu üzerine düşünülmüştür. Anahtar oluşturma işlemi için asal sayılar [&#8230;]</p>
<p><a href="https://www.ertandonmez.org/rsa-sifreleme-algoritmasi/">Rsa Şifreleme Algoritması</a> yazısı ilk önce <a href="https://www.ertandonmez.org">Ertan Dönmez</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="alignleft" src="https://www.ertandonmez.org/wp-content/uploads/rsa.gif" alt="" width="350" height="243" />RSA algoritması, Amerika’ da 1983 yılında MIT’ten patent almıştır. Bu  patent 21 Eylül 2000 de son bulmuştur. Ancak patenti daha önce bir  uygulamaya ait olduğu için bir başka ülkede patent alınamaz. Bir genel  anahtarlı şifreleme tekniği olan RSA, çok büyük tamsayıları oluşturma ve  bu sayıları işleminin zorluğu üzerine düşünülmüştür. Anahtar oluşturma  işlemi için asal sayılar kullanılarak daha güvenli bir yapı  oluşturulmuştur. Anahtar oluşturma algoritması şu şekildedir:<br />
• P ve Q gibi çok büyük iki asal sayı seçilir.<br />
• Bu iki asal sayının çarpımı N = P.Q ve bu bir eksiklerinin  φ(N)=(P-1)(Q-1) hesaplanır.<br />
• 1’den büyük φ(N)’den küçük φ(N) ile aralarında asal bir E tamsayısı  seçilir.<span id="more-174"></span><br />
• Seçilen E tamsayısının mod φ(N)’de tersi alınır, sonuç D gibi bir  tamsayıdır.<br />
• E ve N tamsayıları genel anahtarı, D ve N tamsayıları ise özel  anahtarı oluşturur.<br />
Genel ve özel anahtarları oluşturduktan sonra gönderilmek istenen bilgi  genel anahtar ile şifrelenir. Şifreleme işlemi şu şekilde yapılmaktadır:  Şifrelenecek bilginin sayısal karşılığının E’ ninci kuvveti alınır ve  bunun mod N deki karşılığı şifrelenmiş metni oluşturmaktadır. Genel  anahtar ile şifrelenmiş bir metin ancak özel anahtar ile açılabilir. Bu  yüzden şifrelenmiş metin, yine aynı yolla, şifrelenmiş metnin sayısal  karşılığının D’ninci kuvveti alınır ve bunun mod N deki karşılığı  orijinal metni oluşturur.<br />
Basit bir örnek ile algoritmayı tekrar anlatalım. Örneğin basitliği  açısından daha küçük asal sayılarla çalışacağız. Öncelikle genel ve özel  anahtarlarımızı oluşturalım.<br />
• P=7 ve Q=17 gibi iki asal sayı seçelim.<br />
• Bu iki asal sayının çarpımı N=P.Q; N=119 ve bu iki asal sayının bir  eksiklerinin çarpımı<br />
φ(N)=(P-1)(Q-1); φ(N)=96 olarak hesaplanır.<br />
• 1’den büyük 96’dan küçük 96 ile aralarında asal bir E=5 tamsayısı  seçelim.<br />
• Seçilen E=5 tamsayısının mod 96’da tersi alınır, sonuç D=77 gibi bir  tamsayıdır.<br />
• 5 ve 119 tamsayıları genel anahtarı, 77 ve 119 tamsayıları ise özel  anahtarı oluşturur.<br />
Bu algoritmada iki asal sayının çarpımını kullanarak anahtar  oluşturulmasının sebebi, iki asal sayının çarpımını asal çarpanlarına  ayırmak asal olmayan sayıları ayırmaktan daha zorlu olmasıdır. Şimdi  oluşturduğumuz {5, 119} ve {77, 119} anahtarlarımızı kullanarak  şifreleme yapalım. Örnek olarak, 19 sayısını genel anahtarımızla {5,  119} şifreleyelim. 19 sayısının 5’inci kuvvetinin mod 119 daki karşılığı  olan 66, 19 sayısının RSA şifrelenmiş halidir. Özel anahtarımızı {77,  119} kullanarak 66’nın 77’nci kuvvetinin mod 119 daki karşılığı tahmin  de edebileceğiniz gibi 19 dur. İki tamsayının aralarında asal olup  olmadığının testi için matematikten de bildiğimiz Öklid algoritması  kullanılır. Çok büyük asal sayı oluşturmak oldukça zor bir iştir. RSA  ile günümüzde 1024 bitlik bir anahtar (yaklaşık 300 basamaklı bir sayı)  basit uygulamalar için yeterli bir şifreleme tekniği olarak  kullanılabilir. RSA algoritması, bir şifreleme algoritması için oldukça  basit bir algoritmadır. Buna karşın sürekli çok büyük asal sayı  oluşturmak oldukça zor bir işlemdir. Asal sayılarının bilinen bir  formülü yoktur. RSA algoritmasını biz de yazabiliriz, ancak algoritmanın  tüm detaylarıyla teker teker uğraşmak zorunda kalırdık. Bunun için,  Microsoft .NET Framework’ te hali hazırda RSA uygulaması geliştirebilmek  için RSA sınıfı bulunmaktadır. Kullanımı oldukça basit olduğu için bir  web servisi ile örneklendirebiliriz. Bunun için bir web servisi  oluşturalım. Bu web servisine rsa isimli sınıfından bir değişken  tanımlayalım. Bu web servisine şifreleme ve deşifreleme için aşağıdaki  iki web metodu ekleyelim.<br />
<code> </code></p>
<div>
<div>
<table>
<tbody>
<tr>
<td><code>01</code></td>
<td><code>&lt;/code&gt;C#</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>02</code></td>
<td><code>[WebMethod]</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>03</code></td>
<td><code>public string Encrypt(string  stringToEncrypt)</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>04</code></td>
<td><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>05</code></td>
<td><code>byte[] buffer =  Encoding.UTF8.GetBytes(stringToEncrypt);</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>06</code></td>
<td><code>return  Encoding.UTF8.GetString(rsa.Encrypt(buffer,false));</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>07</code></td>
<td><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>08</code></td>
<td><code>[WebMethod]</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>09</code></td>
<td><code>public string Decrypt(string  stringToDecrypt)</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>10</code></td>
<td><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>11</code></td>
<td><code>byte[] buffer =  Encoding.UTF8.GetBytes(stringToDecrypt);</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>12</code></td>
<td><code>return  Encoding.UTF8.GetString(rsa.Decrypt(buffer,false));</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>13</code></td>
<td><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>14</code></td>
<td><code>VB.NET</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>15</code></td>
<td><code>_</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>16</code></td>
<td><code>Public Function Encrypt(ByVal  stringToEncrypt As String) As String</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>17</code></td>
<td><code>Dim buffer As Byte() =  Encoding.UTF8.GetBytes(stringToEncrypt)</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>18</code></td>
<td><code>Return  Encoding.UTF8.GetString(rsa.Encrypt(buffer, False))</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>19</code></td>
<td><code>End Function</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>20</code></td>
<td><code>_</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>21</code></td>
<td><code>Public Function Decrypt(ByVal  stringToDecrypt As String) As String</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>22</code></td>
<td><code>Dim buffer As Byte() =  Encoding.UTF8.GetBytes(stringToDecrypt)</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>23</code></td>
<td><code>Return  Encoding.UTF8.GetString(rsa.Decrypt(buffer, False))</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>24</code></td>
<td><code>End Function</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>25</code></td>
<td><code>C++.NET</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>26</code></td>
<td><code>[System::Web::Services::WebMethod]</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>27</code></td>
<td><code>String __gc* Encrypt(String  __gc * stringToEncrypt)</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>28</code></td>
<td><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>29</code></td>
<td><code>Byte buffer[] =  Encoding::UTF8-&gt;GetBytes(stringToEncrypt);</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>30</code></td>
<td><code>return  Encoding::UTF8-&gt;GetString(rsa-&gt;Encrypt(buffer,false));</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>31</code></td>
<td><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>32</code></td>
<td><code>[System::Web::Services::WebMethod]</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>33</code></td>
<td><code>String __gc* Decrypt(String  __gc * stringToDecrypt)</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>34</code></td>
<td><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>35</code></td>
<td><code>Byte buffer[] =  Encoding::UTF8-&gt;GetBytes(stringToDecrypt);</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>36</code></td>
<td><code>return  Encoding::UTF8-&gt;GetString(rsa-&gt;Decrypt(buffer,false));</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>37</code></td>
<td><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>38</code></td>
<td><code>J#</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>39</code></td>
<td><code>/** @attribute WebMethod() */</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>40</code></td>
<td><code>public String Encrypt(String  stringToEncrypt)</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>41</code></td>
<td><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>42</code></td>
<td><code>ubyte[] buffer =  Encoding.get_UTF8().GetBytes(stringToEncrypt);</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>43</code></td>
<td><code>return  Encoding.get_UTF8().GetString( rsa.Encrypt(buffer,false) );</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>44</code></td>
<td><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>45</code></td>
<td><code>/** @attribute WebMethod() */</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>46</code></td>
<td><code>public String Decrypt(String  stringToDecrypt)</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>47</code></td>
<td><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>48</code></td>
<td><code>ubyte[] buffer =  Encoding.get_UTF8().GetBytes(stringToDecrypt);</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>49</code></td>
<td><code>return  Encoding.get_UTF8().GetString( rsa.Decrypt(buffer,false) );</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>50</code></td>
<td><code>}&lt;code&gt;</code></td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Bu iki metot RSA algoritmasını kullanarak şifreleme ve deşifreleme  işlemini yapabilmektedir.Ancak bu kodu denerseniz Encrypt metodu ile  şifrelediğiniz metni Decrypt ile açamadığınızı göreceksiniz. Bunun  sebebi kullanılan anahtarları saklamamızdır. Dikkatinizi çekecek ikinci  bir özellikte RSACryptoServiceProvider sınıfının Encrypt ve Decrypt  metotlarının ikinci parametresidir. Burada örnek için false verdiğimiz  değer, Microsoft Windows XP ve üzeri işletim sistemleri tarafından  sağlanan bir özelliktir. OAEP (Optimal Asymmetric Encryption Padding)  doldurmanın kullanılıp kullanılmayacağını belirtir. Şimdi  System.Security.Cryptgraphy altındaki RSA ve RSACryptoServiceProvider  sınıflarını inceleyelim.<br />
RSA sınıfı RSA algoritmasını kullanmak isteyen kodların türetilmesi  gereken ana sınıfı tanımlar. RSA sınıfı, AsymmetricAlgorithm sınıfından  türeyen soyut bir sınıftır. Bu sınıfın erişilebilir.<br />
Özellikleri şunlardır:<br />
• KeyExchangeAlgorithm, anahtar değişimi algoritmasının ismini belirtir.  RSA için “RSAPKCS1-<br />
KeyEx” tir.<br />
• KeySize, şifreleme ve deşifreleme için kullanılacak anahtarların kaç  bitten oluşacağını<br />
gösterir. Bu özelliğin değerini değiştirerek, kullanılacak bit sayısını  ayarlayabilirsiniz.<br />
Varsayılan anahtar boyutu 1024 bittir.<br />
• LegalKeySize, bu algoritma tarafından desteklenen geçerli anahtarlar  bit olarak<br />
büyüklüğünü gösterir. RSA algoritması için anahtar büyüklüğü en az 384  bit en fazla<br />
16384 bittir. 16384 bit 2KB büyüklüğünde bir anahtar anlamına gelmektir.  Bu da<br />
yaklaşık 5000 basamaklı bir sayı anlamına gelmektedir.<br />
• SignatureAlgorithm, imzalama için kullanılacak algoritmanın adını  gösterir. RSA için<br />
http://www.w3.org/2000/09/xmldsig#rsa-sha1 ‘dir.<br />
Bu sınıfın erişilebilir metotları ise şunlardır:<br />
• Clear, RSA tarafından kullanılan tüm kaynakları sisteme geri verir.<br />
• Create, RSA’nın özel uygulamalarının yazıldığı durumlarda nesnenin  oluşturulduğunda<br />
yapılacak işleri içerir.<br />
• DecryptValue, özel anahtar ile verilen bilgiyi deşifrelemek için  kullanılır.<br />
• EncryptValue, genel anahtar ile verilen bilgiyi şifrelemek için  kullanılır.<br />
• Equals, iki nesnenin birbirine eşit olup olmadığını test eder.<br />
• ExportParameters, RSA’in tüm parametreleri özel ve genel anahtarlar  dahil<br />
RSAParameter yapısından bir nesne içine kaydeder.<br />
• FromXmlString, XML Deserileştirme gibidir. ToXMLString metodu ile  XML’e aktarılmış<br />
nesneyi yeniden oluşturur, nesneyi XML’e yüklenmeden önceki durumuna  getirir.<br />
• GetHashCode, bellekteki o nesneye özgü bir hash kodu oluşturur.<br />
• GetType, bu nesnenin tipini verir.<br />
• ImportParameters, RSAParameters yapısından bir nesne içindeki, RSA’nın  kullanacağı<br />
tüm parametreleri özel ve genel anahtarları dahil geri yükler.<br />
• ToString, şu anki nesneyi ifade eden bir metin oluşturur.<br />
• ToXmlString, XML Serileştirme gibidir. Nesnenin o anki durumunu  yeniden<br />
oluşturulabilecek bir şekilde XML’e aktarır.<br />
Şimdi, RSA sınıfından bahsederken ismi geçen RSAParameters yapısını  inceleyelim. Bu yapı da yine System.Security.Cryptography altında yer  almaktadır. Bu yapının en önemli özelliği serileştirilebiliyor  olmasıdır. Bu özelliği sayesinde Binary(ikili) ve ya XML olarak bu  yapıyı serileştirip, aktarabiliriz. Bu yapı içerisinde algoritmayı  anlatırken kullandığımız P ve Q gibi semboller ile ifade ettiğimiz  algoritmanın temel parametreleri yer almaktadır. Örneklerimizde de yer  alan RSACryptoServiceProvider sınıfı ise doğrudan RSA şifrelemesi için  kullanılacak sınıfı ifade eder. Bu sınıf biraz evvel bahsettiğimiz RSA  sınıfından türeyen mühürlü bir sınıftır. Mühürlü sınıf, hiç bir sınıfın  kendisinden türetilemeyeceğini ifade eder.<br />
Bu sınıfın erişilebilir özellikleri şunlardır:<br />
• KeyExchangeAlgorithm, anahtar değişimi algoritmasının ismini belirtir.  RSA için “RSAPKCS1- KeyEx”tir.<br />
• KeySize, şifreleme ve deşifreleme için kullanılacak anahtarların kaç  bitten oluşacağını gösterir. Bu özelliğin değerini değiştirerek,  kullanılacak bit sayısını ayarlayabilirsiniz. Varsayılan anahtar boyutu  1024 bittir.<br />
• LegalKeySize, bu algoritma tarafından desteklenen geçerli anahtarlar  bit olarak büyüklüğünü gösterir. RSA algoritması için anahtar büyüklüğü  en az 384 bit en fazla 16384 bittir. 16384 bit 2KB büyüklüğünde bir  anahtar anlamına gelmektir. Bu da yaklaşık 5000 basamaklı bir sayı  anlamına gelmektedir.<br />
• PersistKeyInCsp, anahtarın CSP (Cryptographic Service Provider)  içerisinde kalıcı olarak tutulup tutulmayacağını belirten özelliktir. Bu  özelliğin değerini değiştirerek dışarıdan bu özelliği aktif/pasif  kılabilirsiniz.<br />
• SignatureAlgorithm, imzalama için kullanılacak algoritmanın adını  gösterir. RSA için<br />
http://www.w3.org/2000/09/xmldsig#rsa-sha1 ‘dir.<br />
• UseMachineKeyStore, PersistKeyInCsp ile bilgisayar üzerinde kalıcı  olarak tutulması istenen anahtarları o an ki kullanıcı profilinde mi  yoksa tüm kullanıcılar için ortak olan bir yerde mi tutulacağını  belirtir.<br />
Bu sınıfın erişilebilir metotları ise şunlardır:<br />
• Clear, RSA tarafından kullanılan tüm kaynakları sisteme geri verir.<br />
• Decrypt, RSA algoritması ile verilen bilgiyi deşifre eder.<br />
• DecryptValue, özel anahtar ile verilen bilgiyi deşifrelemek için  kullanılır. Ancak Microsoft .NET Framework’ ün 1.1 versiyonunda bu metot  desteklenmemektedir.<br />
• Encrypt, RSA algoritması ile verilen bilgiyi şifreler.<br />
• EncryptValue, genel anahtar ile verilen bilgiyi şifrelemek için  kullanılır. Ancak Microsoft .NET Framework’ ün 1.1 versiyonunda bu metot  desteklenmemektedir.<br />
• Equals, iki nesnenin birbirine eşit olup olmadığını test eder.<br />
• ExportParameters, RSA’in tüm parametreleri özel ve genel anahtarlar  dahil RSAParameter yapısından bir nesne içine kaydeder.<br />
• FromXmlString, XML Deserileştirme gibidir. ToXMLString metodu ile  XML’e aktarılmış nesneyi yeniden oluşturur, nesneyi XML’e yüklenmeden  önceki durumuna getirir.<br />
• GetHashCode, bellekteki o nesneye özgü bir hash kodu oluşturur.<br />
• GetType, bu nesnenin tipini verir.<br />
• ImportParameters, RSAParameters yapısından bir nesne içindeki, RSA’nın  kullanacağı tüm parametreleri özel ve genel anahtarları dahil geri  yükler.<br />
• SignData, verilen bilginin hash değerini hesaplar ve bu değer ile  veriyi imzalar.<br />
• SignHash, belirtilen hash değeri için imzayı hesaplar ve özel anahtar  ile bu bilgiyi şifreler.<br />
• ToString, şu an ki nesneyi ifade eden bir metin oluşturur.<br />
• ToXmlString, XML Serileştirme gibidir. Nesnenin o anki durumunu  yeniden oluşturulabilecek bir şekilde XML’e aktarır.<br />
• VerifyData, belirtilen bilgi için imzayı tekrar hesaplayıp var olan  imza ile karşılaştırır.<br />
• VerifyHash, belirtilen hash değeri için imzayı tekrar hesaplayıp var  olan imza ile karşılaştırır.</p>
<p><a href="https://www.ertandonmez.org/rsa-sifreleme-algoritmasi/">Rsa Şifreleme Algoritması</a> yazısı ilk önce <a href="https://www.ertandonmez.org">Ertan Dönmez</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ertandonmez.org/rsa-sifreleme-algoritmasi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
