// project created on 30.01.2006 at 07:56
using System;

namespace Letzte_Oelung
{
    class MainClass
    {
        public static void Main(string[] args)
            {
            string strClear = "Das ist ein sehr bleder Text ohne Inhalt Jucheeeeee!";
            string strCrypt, strDecrypt;
            
            Console.WriteLine("Aus: \"{0}\" wird", strClear);
            
            strCrypt = RndEncrypt(strClear, 1234);
            
            Console.WriteLine("verschlisselt: \"{0}\".", strCrypt);

            for (int i = 0; i < 2000; i++)
                {
                strDecrypt = RndDecrypt(strCrypt, i);
            
                if ( (strDecrypt.IndexOf("EIN") >=0) || ((strDecrypt.IndexOf("UND ") >=0)))
                    {
                    Console.WriteLine("Und mit Schl├╝ssel {1}: \"{0}\".", strDecrypt, i);
                    }
                }
            }

        
        public static void RandomTest()
        {
        Random rndGen = new System.Random(1235);
        
            for (int i = 0; i < 10; i++)
                {
                Console.WriteLine("Zufall {0}: {1}",i+1,rndGen.Next(100));
                }
        }


        public static string RndEncrypt(string strText, int nKey)
            {
            Random rndGen = new System.Random(nKey);
            string strResult = "";
            int nZahl; 
            
            foreach( char c in strText.ToUpper() )
                {
                if( (c >= 'A') && (c <= 'Z') )
                    {
                    // Buchstabe
                    nZahl = c + rndGen.Next(26);
                    
                    if (nZahl > 'Z')
                        {
                        nZahl -= 26;
                        } 
                        
                    strResult += Convert.ToChar(nZahl); 
                    }
                else
                    {
                    //direkt uebernehmen
                    strResult += c;
                    }
                
                }

            return strResult; 
            }

        public static string RndDecrypt(string strText, int nKey)
        {
            Random rndGen = new System.Random(nKey);
            string strResult = "";
            int nZahl; 
            
            foreach( char c in strText.ToUpper() )
                {
                if( (c >= 'A') && (c <= 'Z') )
                    {
                    // Buchstabe
                    nZahl = c - rndGen.Next(26);
                    
                    if (nZahl < 'A')
                        {
                        nZahl += 26;
                        } 
                        
                    strResult += Convert.ToChar(nZahl); 
                    }
                else
                    {
                    //direkt uebernehmen
                    strResult += c;
                    }
                
                }
            
            return strResult; 
        }


        public static string Encrypt(string strText, int nShift)
            {
            string strResult = "";
            int nZahl; 
            
            foreach( char c in strText.ToUpper() )
                {
                if( (c >= 'A') && (c <= 'Z') )
                    {
                    // Buchstabe
                    nZahl = c + nShift;
                    
                    if (nZahl > 'Z')
                        {
                        nZahl -= 26;
                        } 
                        
                    strResult += Convert.ToChar(nZahl); 
                    }
                else
                    {
                    //direkt uebernehmen
                    strResult += c;
                    }
                
                }
            
            return strResult; 
            }



        public static string Decrypt(string strText, int nShift)
        {
            string strResult = "";
            int nZahl; 
            
            foreach( char c in strText.ToUpper() )
                {
                if( (c >= 'A') && (c <= 'Z') )
                    {
                    // Buchstabe
                    nZahl = c - nShift;
                    
                    if (nZahl < 'A')
                        {
                        nZahl += 26;
                        } 
                        
                    strResult += Convert.ToChar(nZahl); 
                    }
                else
                    {
                    //direkt uebernehmen
                    strResult += c;
                    }
                
                }
            
            return strResult; 
        }

        
    } // class
}

syntax highlighted by Code2HTML, v. 0.9.1