C# Program gets stuck

Posted by weirdcsharp on Stack Overflow See other posts from Stack Overflow or by weirdcsharp
Published on 2011-01-30T14:26:19Z Indexed on 2011/01/30 15:25 UTC
Read the original article Hit count: 271

Filed under:
|
|

The program never prints out "test" unless I set a breakpoint on it and step over myself. I don't understand what's happening. Appreciate any help.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        string testKey = "lkirwf897+22#bbtrm8814z5qq=498j5";
        string testIv = "741952hheeyy66#cs!9hjv887mxx7@8y";
        string testValue = "random";

        string encryptedText = EncryptRJ256(testKey, testIv, testValue);
        string decryptedText = DecryptRJ256(testKey, testIv, encryptedText);

        Console.WriteLine("encrypted: " + encryptedText);
        Console.WriteLine("decrypted: " + decryptedText);
        Console.WriteLine("test");
    }

    public static string DecryptRJ256(string key, string iv, string text)
    {

        string sEncryptedString = text;

        RijndaelManaged myRijndael = new RijndaelManaged();
        myRijndael.Padding = PaddingMode.Zeros;
        myRijndael.Mode = CipherMode.CBC;
        myRijndael.KeySize = 256;
        myRijndael.BlockSize = 256;

        byte[] keyByte = System.Text.Encoding.ASCII.GetBytes(key);
        byte[] IVByte = System.Text.Encoding.ASCII.GetBytes(iv);

        ICryptoTransform decryptor = myRijndael.CreateDecryptor(keyByte, IVByte);

        byte[] sEncrypted = Convert.FromBase64String(sEncryptedString);

        byte[] fromEncrypt = new byte[sEncrypted.Length + 1];

        MemoryStream msDecrypt = new MemoryStream(sEncrypted);
        CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);

        csDecrypt.Read(fromEncrypt, 0, fromEncrypt.Length);

        return Encoding.ASCII.GetString(fromEncrypt);

    }


    public static string EncryptRJ256(string key, string iv, string text)
    {

        string sToEncrypt = text;

        RijndaelManaged myRijndael = new RijndaelManaged();
        myRijndael.Padding = PaddingMode.Zeros;
        myRijndael.Mode = CipherMode.CBC;
        myRijndael.KeySize = 256;
        myRijndael.BlockSize = 256;


        byte[] keyByte = Encoding.ASCII.GetBytes(key);
        byte[] IVByte = Encoding.ASCII.GetBytes(iv);

        ICryptoTransform encryptor = myRijndael.CreateEncryptor(keyByte, IVByte);

        MemoryStream msEncrypt = new MemoryStream();
        CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);

        byte[] toEncrypt = System.Text.Encoding.ASCII.GetBytes(sToEncrypt);

        csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
        csEncrypt.FlushFinalBlock();

        byte[] encrypted = msEncrypt.ToArray();

        return Convert.ToBase64String(encrypted);

    }
}

edit:

Tried Debug.WriteLine

        Debug.WriteLine("encrypted: " + encryptedText);
        Debug.WriteLine("decrypted: " + decryptedText);
        Debug.WriteLine("test");

Output:

encrypted: T4hdAcpP5MROmKLeziLvl7couD0o+6EuB/Kx29RPm9w=
decrypted: randomtest

Not sure why it's not printing the line terminator.

© Stack Overflow or respective owner

Related posts about c#

Related posts about debugging