If you want to encrypt and decrypt text using FIPS complaint algorithm just use DESCryptoServiceProvider SymmetricAlgorithm for framework 2.0 and above.
asddfgdfg
public class _Security
{
public static SymmetricAlgorithm objCrptoService = new DESCryptoServiceProvider();
//You can modif the the tempIV
static string tempIV = "1b46123aaed34e869af8";
public static string EncryptString(string sourceText, string key)
{
try
{
// Create a memory stream
MemoryStream objMemStream = new MemoryStream();
//Set the legal keys and initialization verctors
objCrptoService.Key = GetLegalsecretKey(key);
objCrptoService.IV = GetLegalIV();
ICryptoTransform desencrypt = objCrptoService.CreateEncryptor();
CryptoStream cryptostream = new CryptoStream(objMemStream, desencrypt, CryptoStreamMode.Write);
//CryptoStream objCryptStream = new CryptoStream(objMemStream, objCrptoService.CreateEncryptor(), CryptoStreamMode.Write);
StreamWriter objStreamWriter = new StreamWriter(cryptostream);
// Write the sourceText to the memroy stream.
objStreamWriter.WriteLine(sourceText);
// Close the StreamWriter and CryptoStream objects.
objStreamWriter.Close();
cryptostream.Close();
// Get an array of bytes that represents the memory stream.
byte[] outputBuffer = objMemStream.ToArray();
// Close the memory stream.
objMemStream.Close();
// Return the encrypted byte array.
string clearText = System.Convert.ToBase64String(outputBuffer);
clearText = clearText.Replace("+", "$$$$$$");
clearText = clearText.Replace("/", "@@@@@@");
return clearText;
}
catch (Exception exc)
{
return "";
}
}
public static string DecryptString(string encriptedText, string key)
{
try
{
encriptedText = encriptedText.Replace("$$$$$$", "+");
encriptedText = encriptedText.Replace("@@@@@@", "/");
//Convert the text into bytest
byte[] ecriptedBytes = System.Convert.FromBase64String(encriptedText);
// Create a memory stream to the passed buffer
MemoryStream objMemStream = new MemoryStream(ecriptedBytes);
//Set the legal keys and initialization verctors
objCrptoService.Key = GetLegalsecretKey(key);
objCrptoService.IV = GetLegalIV();
// Create a CryptoStream using the memory stream and the cryptographic service provider version
// of the Data Encryption stanadard algorithm key
CryptoStream objCryptStream = new CryptoStream(objMemStream, objCrptoService.CreateDecryptor(), CryptoStreamMode.Read);
// Create a StreamReader for reading the stream.
StreamReader objstreamReader = new StreamReader(objCryptStream);
// Read the stream as a string.
string outputText = objstreamReader.ReadLine();
/*
//Decryption in 4.0 with bad data error solution.
MemoryStream stream = new MemoryStream();
objCryptStream.CopyTo(stream);
stream.Position = 0;
StreamReader R = new StreamReader(stream);
string outputText = R.ReadToEnd();
*/
// Close the streams.
objstreamReader.Close();
objCryptStream.Close();
objMemStream.Close();
return outputText;
}
catch(Exception exc)
{
return exc.Message;
}
}
private static byte[] GetLegalsecretKey(string secretKey)
{
string tempKey = secretKey;
objCrptoService.GenerateKey();
byte[] tempBytes = objCrptoService.Key;
int secretKeyLength = tempBytes.Length;
if (tempKey.Length > secretKeyLength)
tempKey = tempKey.Substring(0, secretKeyLength);
else if (tempKey.Length < secretKeyLength)
tempKey = tempKey.PadRight(secretKeyLength, ' ');
return ASCIIEncoding.ASCII.GetBytes(tempKey);
}
private static byte[] GetLegalIV()
{
objCrptoService.GenerateIV();
byte[] tempBytes = objCrptoService.IV;
int len = tempBytes.Length;
if (tempIV.Length < len)
tempIV = tempIV.PadRight(len, ' ');
else
tempIV = tempIV.Substring(0, len);
return ASCIIEncoding.ASCII.GetBytes(tempIV);
}
}
asddfgdfg
