PDA

View Full Version : Rijndael Cryptography



hamidarr
9th July 2011, 10:21
hi everybody i have a friend that have a website with asp.net he encrypt data with Rijndael Cryptography and write to database i want in my qt application decrypt data and show the user how can i implement this algorithm in qt. this code is in asp.net that my friend use it to encrypt and decrypt data.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;

namespace TSecurityWebApp.Classes
{
public class SecurityClass
{
public static readonly byte[] PKey = { 18, 45, 248, 40, 250, 160, 96, 102, 137, 39, 130, 244, 83, 242, 253, 221 };
public static readonly byte[] PIV = { 200, 193, 57, 174, 121, 152, 246, 218, 171, 208, 106, 150, 93, 221, 160, 140 };

public static string DecodeData(string InputData, byte[] PKey, byte[] PIV)
{
string retStr = string.Empty;
try
{
var r = System.Security.Cryptography.Rijndael.Create();

r.KeySize = 128;
r.BlockSize = 128;

r.Key = PKey;
r.IV = PIV;

byte[] inpBytes = new byte[InputData.Length / 2];
for (int i = 0; i < InputData.Length / 2; i++)
inpBytes[i] = byte.Parse((InputData[(i * 2)].ToString() + InputData[(i * 2 + 1)].ToString()), System.Globalization.NumberStyles.HexNumber);
byte[] decBytes = r.CreateDecryptor().TransformFinalBlock(inpBytes, 0, inpBytes.Length);

r.Clear();

retStr = System.Text.UnicodeEncoding.Unicode.GetString(decB ytes);
}
catch { retStr = string.Empty; }
return retStr;
}

public static string EncodeData(string InputData, byte[] PKey, byte[] PIV)
{
string retStr = string.Empty;
try
{
var r = System.Security.Cryptography.Rijndael.Create();

r.KeySize = 128;
r.BlockSize = 128;

r.Key = PKey;
r.IV = PIV;

byte[] inpBytes = System.Text.UnicodeEncoding.Unicode.GetBytes(Input Data);
byte[] encBytes = r.CreateEncryptor().TransformFinalBlock(inpBytes, 0, inpBytes.Length);

r.Clear();

foreach (byte b in encBytes)
retStr += b.ToString("X2");
}
catch { retStr = string.Empty; }
return retStr;
}

public static string EncriptConnStr(string ConnStr)
{
try
{
SqlConnectionStringBuilder connBuilder = new SqlConnectionStringBuilder(ConnStr);
if (!string.IsNullOrEmpty(connBuilder.Password))
connBuilder.Password = SecurityClass.EncodeData(connBuilder.Password, SecurityClass.PKey, SecurityClass.PIV);
ConnStr = connBuilder.ConnectionString;
}
catch { ConnStr = string.Empty; }
return ConnStr;
}

public static string DecriptConnStr(string EncConnStr)
{
string decConnStr = EncConnStr;
try
{
SqlConnectionStringBuilder connBuilder = new SqlConnectionStringBuilder(EncConnStr);
if (!string.IsNullOrEmpty(connBuilder.Password))
connBuilder.Password = SecurityClass.DecodeData(connBuilder.Password, SecurityClass.PKey, SecurityClass.PIV);
decConnStr = connBuilder.ConnectionString;
}
catch { decConnStr = EncConnStr; }
return decConnStr;
}
}
}

ChrisW67
9th July 2011, 11:15
Qt has no AES encryption or decryption capability. You can use any third-party library you like. One Qt-like wrapper is QCA (http://delta.affinix.com/qca/), or you could use OpenSSL (libcrypto) directly.