using
System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace EncryptDemo
{
class Program
{
static void Main( string [] args)
{
// Create a new DES key.
DESCryptoServiceProvider key = new DESCryptoServiceProvider();
// get the input
string val = null ;
val=Console.ReadLine().ToString();
// Encrypt a string to a byte array
byte [] encryptedByte = Encrypt(val, key);
// write out the encrypt result
if (encryptedByte != null )
for ( int i = 0 ; i < encryptedByte.Length; i++)
{
Console.Write(encryptedByte[i]);
}
// Decrypt the encrypted byte array
val = Decrypt(encryptedByte, key);
Console.Write( " \n " );
// write out the original data
Console.Write(val);
Console.ReadKey();
}
/// <summary>
/// a method to encrypt the string to a byte array
/// </summary>
/// <param name="strToEncrypt"> the string need to encrypt </param>
/// <param name="key"> the CSP DES key </param>
/// <returns> a byte array </returns>
public static byte [] Encrypt( string strToEncrypt,SymmetricAlgorithm key)
{
// if the string is null, then return
if (strToEncrypt == null )
return null ;
// create a memory stream
MemoryStream ms = new MemoryStream();
// create a cryptostream using memory stream and the CSP DES key.
CryptoStream encStream = new CryptoStream(ms, key.CreateEncryptor(), CryptoStreamMode.Write);
// Create a StreamWriter to write a string to the stream.
StreamWriter sw = new StreamWriter(encStream);
// Write the strToEncrypt to the stream
sw.Write(strToEncrypt);
// Close the StreamWriter and CryptoStream.
sw.Close();
encStream.Close();
// Get an array of bytes that represents
// the memory stream.
byte [] result = ms.ToArray();
// Close the memory stream.
ms.Close();
// Return the encrypted byte array.
return result;
}
/// <summary>
/// a method to decrypt a encrypted byte to its original string
/// </summary>
/// <param name="byteToDecrypt"> encrypted data, it must be a byte array </param>
/// <param name="key"> the CSP DES key </param>
/// <returns> original string </returns>
public static string Decrypt( byte [] byteToDecrypt, SymmetricAlgorithm key)
{
// create a memory stream, as it will in read mode, so it must be new with the byteToDecrypt
MemoryStream ms = new MemoryStream(byteToDecrypt);
// create a cryptostream using memory stream and the CSP DES key.
CryptoStream encStream = new CryptoStream(ms, key.CreateDecryptor(), CryptoStreamMode.Read);
// Create a StreamReader for reading the stream.
StreamReader sr = new StreamReader(encStream);
string result = "" ;
// Read the stream as a string.
result = sr.ReadLine();
// Close the streams.
sr.Close();
encStream.Close();
ms.Close();
return result;
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace EncryptDemo
{
class Program
{
static void Main( string [] args)
{
// Create a new DES key.
DESCryptoServiceProvider key = new DESCryptoServiceProvider();
// get the input
string val = null ;
val=Console.ReadLine().ToString();
// Encrypt a string to a byte array
byte [] encryptedByte = Encrypt(val, key);
// write out the encrypt result
if (encryptedByte != null )
for ( int i = 0 ; i < encryptedByte.Length; i++)
{
Console.Write(encryptedByte[i]);
}
// Decrypt the encrypted byte array
val = Decrypt(encryptedByte, key);
Console.Write( " \n " );
// write out the original data
Console.Write(val);
Console.ReadKey();
}
/// <summary>
/// a method to encrypt the string to a byte array
/// </summary>
/// <param name="strToEncrypt"> the string need to encrypt </param>
/// <param name="key"> the CSP DES key </param>
/// <returns> a byte array </returns>
public static byte [] Encrypt( string strToEncrypt,SymmetricAlgorithm key)
{
// if the string is null, then return
if (strToEncrypt == null )
return null ;
// create a memory stream
MemoryStream ms = new MemoryStream();
// create a cryptostream using memory stream and the CSP DES key.
CryptoStream encStream = new CryptoStream(ms, key.CreateEncryptor(), CryptoStreamMode.Write);
// Create a StreamWriter to write a string to the stream.
StreamWriter sw = new StreamWriter(encStream);
// Write the strToEncrypt to the stream
sw.Write(strToEncrypt);
// Close the StreamWriter and CryptoStream.
sw.Close();
encStream.Close();
// Get an array of bytes that represents
// the memory stream.
byte [] result = ms.ToArray();
// Close the memory stream.
ms.Close();
// Return the encrypted byte array.
return result;
}
/// <summary>
/// a method to decrypt a encrypted byte to its original string
/// </summary>
/// <param name="byteToDecrypt"> encrypted data, it must be a byte array </param>
/// <param name="key"> the CSP DES key </param>
/// <returns> original string </returns>
public static string Decrypt( byte [] byteToDecrypt, SymmetricAlgorithm key)
{
// create a memory stream, as it will in read mode, so it must be new with the byteToDecrypt
MemoryStream ms = new MemoryStream(byteToDecrypt);
// create a cryptostream using memory stream and the CSP DES key.
CryptoStream encStream = new CryptoStream(ms, key.CreateDecryptor(), CryptoStreamMode.Read);
// Create a StreamReader for reading the stream.
StreamReader sr = new StreamReader(encStream);
string result = "" ;
// Read the stream as a string.
result = sr.ReadLine();
// Close the streams.
sr.Close();
encStream.Close();
ms.Close();
return result;
}
}
}