Hello,
I am trying to implement Licencing in C#. I generated an encrypted licence file using following program:
using System;
using System.Security.Cryptography;
using System.Text;
using System.IO;
class RijndaelSample
{
static void Main()
{
try
{
byte[] RijendaelKey = new byte[32];
byte[] RijendaelVector = new byte[16];
string key = "12345678912345678912345678912345";
string IV= "1234567891234567";
string sData = "BFEBFBFF00020652#0008";
string FileName = "system.dat";
for (int l = 0; l < 32; l++)
{
RijendaelKey[l]=Convert.ToByte(key[l]);
}
for (int l = 0; l < 16; l++)
{
RijendaelVector[l] = Convert.ToByte(IV[l]);
}
EncryptTextToFile(sData, FileName, RijendaelKey, RijendaelVector);
Decrypt the text from a file using the file name, key, and IV.
string Decrypted_text = DecryptTextFromFile(FileName, RijendaelKey, RijendaelVector);
Console.WriteLine(Decrypted_text);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
public static void EncryptTextToFile(String Data, String FileName, byte[] Key, byte[] IV)
{
try
{
FileStream fStream = File.Open(FileName, FileMode.OpenOrCreate);
Rijndael RijndaelAlg = Rijndael.Create();
CryptoStream cStream = new CryptoStream(fStream,
RijndaelAlg.CreateEncryptor(Key, IV),
CryptoStreamMode.Write);
StreamWriter sWriter = new StreamWriter(cStream);
try
{
sWriter.WriteLine(Data);
}
catch (Exception e)
{
Console.WriteLine("An error occurred: {0}", e.Message);
}
finally
{
sWriter.Close();
sWriter.Dispose();
cStream.Close();
cStream.Dispose();
fStream.Close();
fStream.Dispose();
}
}
catch (CryptographicException e)
{
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine("A file error occurred: {0}", e.Message);
}
}
public static string DecryptTextFromFile(String FileName, byte[] Key, byte[] IV)
{
try
{
FileStream fStream = File.Open(FileName, FileMode.OpenOrCreate);
Rijndael RijndaelAlg = Rijndael.Create();
CryptoStream cStream = new CryptoStream(fStream,
RijndaelAlg.CreateDecryptor(Key, IV),
CryptoStreamMode.Read);
StreamReader sReader = new StreamReader(cStream);
string val = null;
try
{
val = sReader.ReadLine();
}
catch (Exception e)
{
Console.WriteLine("An error occurred: {0}", e.Message);
}
finally
{
sReader.Close();
sReader.Dispose();
cStream.Close();
cStream.Dispose();
fStream.Close();
fStream.Dispose();
}
return val;
}
catch (CryptographicException e)
{
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
return null;
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine("A file error occurred: {0}", e.Message);
return null;
}
}
}
With this program I was able to successfully visualize my decrypted data.
Now I copied my encrypted file to another program and tried to read it with same DecryptTextFromFile() function but with it reaches the following line for reading data from file:
val = sReader.ReadLine();
Program throws an exception and no data is red from file. Also I used same Rijendael Key and vector for decryption as used for encryption. If anyone ever encountered this problem, kindly help me.
Thanks in advance.