Existe este método en C#. Hay dos métodos correspondientes, uno es el cifrado y el otro es el descifrado. No es necesario reescribirlo usted mismo.
No lo recuerdo con claridad, hace mucho que no lo escribo, parece ser System. Puedes echarle un vistazo.
Varios métodos de cifrado y descifrado de C#
usando System
usando System.IO
usando System.Security.Cryptography;
usando System.Text;
espacio de nombres IntegratePlatformWebService.CommonMethod
{
///
// /SymmetricMethod
///
clase pública SymmetricMethod
{
private SymmetricAlgorithm mobjCryptoService
cadena privada; Clave;
///
/// el constructor.
///
public SymmetricMethod()
{
mobjCryptoService = new RijndaelManaged();
Clave = "Guz(amp;hj7x89H$yuBI0456FtmaT5amp;fvHUFCy76*h(HilJ$lhj!y6amp;(*jkP87jH7" ;
}
///
/// obtener clave legal.
///
///
byte privado[] GetLegalKey()
{
cadena sTemp = Clave
mobjCryptoService.GenerateKey();
byte[] bytTemp = mobjCryptoService.Key;
int KeyLength = bytTemp.Length
if (sTemp.Length gt; KeyLength)
sTemp = sTemp.Substring(0, KeyLength);
else if (sTemp.Length lt; KeyLength)
sTemp = sTemp.PadRight(KeyLength, ' ');
return ASCIIEncoding.ASCII.GetBytes(sTemp);
}
///
/// obtener legal iv.
///
///
byte privado[] GetLegalIV()
{
cadena sTemp = "E4ghj*Ghg7!rNIfbamp;95GUY86GfghUb#er57HBh(ug6HJ($jhWk7amp;!hg4ui$hjk";
mobjCryptoService.GenerateIV();
byte[] bytTemp = mobjCryptoService.IV;
int IVLength = bytTemp.Length;
if (sTemp.Length gt; IVLength)
sTemp = sTemp. Substring(0, IVLength);
else if (sTemp.Length lt; IVLength)
sTemp = sTemp.PadRight(IVLength, ' ');
return ASCIIEncoding.ASCII.GetBytes(sTemp);
}
///
/// cifrar
///
/// cadena fuente
///
cadena pública Encrypt(cadena Fuente)
{
byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Fuente);
MemoryStream ms = new MemoryStream();
mobjCryptoService.Key = GetLegalKey();
mobjCryptoService.IV = GetLegalIV();
ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
CryptoStream cs = nuevo CryptoStream(ms, encrypto, CryptoStreamMode.Write
cs.Write(bytIn, 0, bytIn.Length);
cs.FlushFinalBlock()
ms.Close(); byte[] bytOut = ms.ToArray();
return Convert.ToBase64String(bytOut);
}
///
/// descifrar
///
/// descifrar cadena
///
cadena pública Decrypt(cadena Fuente )
{
byte[] bytIn = Convert.FromBase64String(Fuente);
MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
mobjCryptoService.Key = GetLegalKey();
mobjCryptoService.IV = GetLegalIV();
formulario encrypto = mobjCryptoService.CreateDecryptor();
CryptoStream cs = nuevo CryptoStream(ms, encrypto, CryptoStreamMode.Read);
StreamReader sr = nuevo StreamReader(cs);
return sr.ReadToEnd();
}
}
///
/// hashmethod p>
///
clase pública HashMethod
{
HashAlgorithm privado HashCryptoService
público HashMethod() p>
{
HashCryptoService = new SHA512Managed();
}
///
/// cifrar
///
///
///
cadena pública Encrypt(fuente de cadena)
{
byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Fuente);
byte[] bytOut = HashCryptoService.ComputeHash(bytIn);
return Convertir; .ToBase64String(bytOut);
}
}
}