sobota, 03 december 2011 12:01 Written by 6209 times
Rate this item
(3 votes)

C# - Cezarová šifra

Cézarova šifra je druh šifry, pri ktorej je každé písmeno správy posunuté o 3 pozícií ďalej v abecede.
V prípade písmena vyskytujúceho sa na konci abecedy sa toto písmeno posunie opäť na začiatok abecedy.
Táto šifra patrí medzi najznámejšie a najstaršie šifrovacie systémy.
Je to bezkľúčový šifrovací systém.

Cézarova šifra pre n = 3:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C


Nasledujúcim kódom si ukážeme ako naprogramovať Cezarovú šifru v C#.

Kód v C#

/*
 * Created by www.projectik.eu.
 * User: 
 * Date: 3. 12. 2011
 * Time: 11:20
 */
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace Cezar
{
	/// <summary>
	/// Description of MainForm.
	/// </summary>
	public partial class MainForm : Form
	{
		private int posun = 3;
		public MainForm()
		{			
			InitializeComponent();	
		}
		
		void RichTextBox1TextChanged(object sender, EventArgs e)
		{
			this.CeasarHash(this.richTextBox1.Text);
		}
		void CeasarHash(string vstup)
		{
			char[] znaky = vstup.ToCharArray();
			string newString = "";
			
			foreach(char znak in znaky)
			{
				if(znak >= 'A' && znak <='Z' )
				{
					if((znak + 3) > 'Z')
					{
						newString += Convert.ToChar(((int)znak+posun)-(26)).ToString();
					}
					else
					{
						newString +=  Convert.ToChar((int)znak+posun).ToString();
					}
				}
				if(znak >= 'a' && (int)znak <= 'z')
				{
					if((znak + 3) > 'z')
					{
						newString += Convert.ToChar(((int)znak+posun)-(26)).ToString();
					}
					else
					{
						newString +=  Convert.ToChar((int)znak+posun).ToString();
					}
				}				
				
			}
			
			this.richTextBox2.Text = newString;		
		}
	}
}

Dešifrovanie funguje presne opačným zpôsobom (odpočítame posun od šifrovaného textu):

Last modified on pondelok, 19 december 2016 21:32
Ing.Jaroslav Vadel

Som zakladateľom www.projectik.eu.

Hram sa na programatora, ktory ovlada c#,cpp,java,unity3d,php,html,NI testand... ..."Naprogramovat program,ktory funguje vie kazdy. Ale to,ze program funguje este neznamena,ze je napisany spravne "..

Website: www.projectik.eu