DES,RC2,Rijndael, TripleDes,RSA, MD5, SHA1通用的安全密码类
2012-06-17 10:53
375 查看
using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;
using System.Web.Security;
//工程需要引用system.web.dll
/**//*
* 通用的安全密码类
*
* 本类库支持DES,RC2,Rijndael, TripleDes,RSA, MD5, SHA1等六种加密格式
*
* 注意:MD5, SHA1加密是不可逆的,所以不支持他们的解密;
*
* 支持生成Key/公钥,Iv/私钥及简单的随机字符;
*
* SmartJavaer
*
* SmartJavaer@163.com
*
* 2006/10/26
*
*/
namespace ManagePassword
{
//枚举加密格式
#region 枚举加密格式
/**//// <summary>
/// 枚举加密的格式
///
/// 对称加密:DES,RC2,RIJNDAEL,TripleDes
/// 非对称加密:DSA,RSA
/// 哈西加密:MD5,SHA1
///
/// </summary>
public enum CryptogramFormat { Des = 1, Rc2, Rijndael, TripleDes,RSA,MD5, SHA1 }
#endregion
//通用密码类
#region 通用密码类
/**//// <summary>
/// 一个通用的加密类
/// 支持DES,RC2,Rijndael, TripleDes,RSA, MD5, SHA1等六种加密格式
/// 注意:MD5, SHA1加密是不可逆的,所以不支持他们的解密;
/// 支持生成Key/公钥,Iv/私钥及简单的随机字符;
/// </summary>
public class Cryptogram
{
private Cryptogram() { }
//加密,解密内部处理
#region 加密,解密内部处理
/**//// <summary>
/// 生成Des,Rc2,Rijndael,TripleDes的处理对象
/// </summary>
/// <param name="encryptionFormat">加密格式</param>
/// <param name="key">Key</param>
/// <param name="iv">IV</param>
/// <returns>返回处理对象,若返回null,则表示生成失败;</returns>
private static SymmetricAlgorithm GetCSP(CryptogramFormat encryptionFormat,string key,string iv)
{
SymmetricAlgorithm mCSP;
switch (encryptionFormat)
{
case CryptogramFormat.Des:
{
mCSP = new DESCryptoServiceProvider();
break;
}
case CryptogramFormat.TripleDes:
{
mCSP = new TripleDESCryptoServiceProvider();
break;
}
case CryptogramFormat.Rc2:
{
mCSP = new RC2CryptoServiceProvider();
break;
}
case CryptogramFormat.Rijndael:
{
mCSP = new RijndaelManaged();
break;
}
default:
mCSP = null;
break;
}
if (mCSP == null)
return null;
if(key.Length==0)
// if(String.IsNullOrEmpty(key))
{
//mCSP.GenerateKey();
return null;
}
else
{
try
{
mCSP.Key = Convert.FromBase64String(key);
}
catch
{
//mCSP.GenerateKey();
return null;
}
}
if (iv.Length==0)
//if (String.IsNullOrEmpty(iv))
{
//mCSP.GenerateIV();
return null;
}
else
{
try
{
mCSP.IV = Convert.FromBase64String(iv);
}
catch
{
//mCSP.GenerateIV();
return null;
}
}
return mCSP;
}
/**//// <summary>
/// Des,Rc2,Rijndael,TripleDes加密
/// </summary>
/// <param name="encryptionFormat">加密格式</param>
/// <param name="srcString">欲加密的字符串</param>
/// <param name="key">Key</param>
/// <param name="iv">IV</param>
/// <returns>返回加密后的字符串,若返回null,则表示加密失败;</returns>
private static string CSPEncode(CryptogramFormat encryptionFormat, string srcString, string key, string iv)
{
SymmetricAlgorithm mCSP;
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
mCSP = GetCSP(encryptionFormat, key, iv);
if (mCSP == null)
return null;
try
{
ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
byt = Convert.FromBase64String(srcString);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}
catch
{
return null;
}
}
/**//// <summary>
/// Des,Rc2,Rijndael,TripleDes解密
/// </summary>
/// <param name="encryptionFormat"></param>
/// <param name="srcString"></param>
/// <param name="key"></param>
/// <param name="iv"></param>
/// <returns></returns>
private static string CSPDecode(CryptogramFormat encryptionFormat, string srcString, string key, string iv)
{
SymmetricAlgorithm mCSP;
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
mCSP = GetCSP(encryptionFormat, key, iv);
if (mCSP == null)
return null;
try
{
ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
byt = Convert.FromBase64String(srcString);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}
catch
{
return null;
}
}
/**//// <summary>
/// RSA加密
/// </summary>
/// <param name="encryptionFormat"></param>
/// <param name="srcString"></param>
/// <param name="key"></param>
/// <param name="iv"></param>
/// <returns></returns>
private static string RSAEncode(CryptogramFormat encryptionFormat, string srcString, string key, string iv)
{
RSACryptoServiceProvider rsa1 = new RSACryptoServiceProvider();
byte[] toEncryptData = null;
byte[] encryptedData = null;
try
{
rsa1.FromXmlString(key);
}
catch
{
return null;
}
try
{
rsa1.FromXmlString(iv);
}
catch
{
return null;
}
toEncryptData = Convert.FromBase64String(srcString);
encryptedData = rsa1.Encrypt(toEncryptData, false);//加密后的数据
return Convert.ToBase64String(encryptedData);
}
/**//// <summary>
/// RSA解密
/// </summary>
/// <param name="encryptionFormat"></param>
/// <param name="srcString"></param>
/// <param name="key"></param>
/// <param name="iv"></param>
/// <returns></returns>
private static string RSADecode(CryptogramFormat encryptionFormat, string srcString, string key, string iv)
{
RSACryptoServiceProvider rsaD = new RSACryptoServiceProvider();
byte[] encryptedData = null ;
byte[] decryptedData = null ;
try
{
rsaD.FromXmlString(key);
}
catch
{
return null;
}
try
{
rsaD.FromXmlString(iv);
}
catch
{
return null;
}
encryptedData = Convert.FromBase64String(srcString);
decryptedData = rsaD.Decrypt(encryptedData, false);//解密后的数据
return Convert.ToBase64String(decryptedData);
}
/**//// <summary>
/// 生成对称加密格式的Key和IV
/// </summary>
/// <param name="encryptionFormat">加密格式</param>
/// <param name="key"></param>
/// <param name="iv"></param>
private static void KeyAndIV(CryptogramFormat encryptionFormat, ref string key, ref string iv)
{
SymmetricAlgorithm mCSP;
switch (encryptionFormat)
{
case CryptogramFormat.Des:
{
mCSP = new DESCryptoServiceProvider();
break;
}
case CryptogramFormat.TripleDes:
{
mCSP = new TripleDESCryptoServiceProvider();
break;
}
case CryptogramFormat.Rc2:
{
mCSP = new RC2CryptoServiceProvider();
break;
}
case CryptogramFormat.Rijndael:
{
mCSP = new RijndaelManaged();
break;
}
default:
mCSP = null;
break;
}
mCSP.GenerateKey();
mCSP.GenerateIV();
key = Convert.ToBase64String(mCSP.Key);
iv = Convert.ToBase64String(mCSP.IV);
}
#endregion
//公共加密解密方法
#region 公共加密解密方法
/**//// <summary>
/// 加密方法
/// </summary>
/// <param name="encryptionFormat">加密格式</param>
/// <param name="srcString">欲加密字符串</param>
/// <returns>返回加密后的字符串;若返回null,表示失败</returns>
public static string Encrypt(CryptogramFormat encryptionFormat, string srcString)
{
try
{
switch (encryptionFormat)
{
case CryptogramFormat.MD5:
return FormsAuthentication.HashPasswordForStoringInConfigFile(srcString, "MD5");
case CryptogramFormat.SHA1:
return FormsAuthentication.HashPasswordForStoringInConfigFile(srcString, "SHA1");
case CryptogramFormat.Des:
case CryptogramFormat.Rc2:
case CryptogramFormat.Rijndael:
case CryptogramFormat.TripleDes:
case CryptogramFormat.RSA:
return "缺少参数";
default:
{
return "不支持该格式的加密";
}
}
}
catch (Exception e)
{
return "加密异常:" + e.Message;
}
}
/**//// <summary>
/// 加密方法
/// </summary>
/// <param name="encryptionFormat">加密格式</param>
/// <param name="srcString">欲加密字符串</param>
/// <param name="key">指定加密的Key</param>
/// <param name="iv">指定加密的IV</param>
/// <returns>返回加密后的字符串;若返回null,表示失败</returns>
public static string Encrypt(CryptogramFormat encryptionFormat, string srcString,string key,string iv)
{
try
{
switch (encryptionFormat)
{
case CryptogramFormat.MD5:
return FormsAuthentication.HashPasswordForStoringInConfigFile(srcString, "MD5");
case CryptogramFormat.SHA1:
return FormsAuthentication.HashPasswordForStoringInConfigFile(srcString, "SHA1");
case CryptogramFormat.Des:
case CryptogramFormat.Rc2:
case CryptogramFormat.Rijndael:
case CryptogramFormat.TripleDes:
return CSPEncode(encryptionFormat, srcString, key, iv);
//case CryptogramFormat.DSA:
// return DSAEncode(encryptionFormat, srcString, key, iv);
case CryptogramFormat.RSA:
return RSAEncode(encryptionFormat, srcString, key, iv);
default:
{
return null;
}
}
}
catch (Exception e)
{
return "加密异常:" + e.Message;
}
}
/**//// <summary>
/// 解密方法
/// </summary>
/// <param name="encryptionFormat">加密格式</param>
/// <param name="srcString">欲解密字符串</param>
/// <param name="key">指定解密的Key</param>
/// <param name="iv">指定解密的IV</param>
/// <returns>返回解密后的字符串;若返回null,表示失败</returns>
public static string Decrypt(CryptogramFormat encryptionFormat, string srcString, string key, string iv)
{
try
{
switch (encryptionFormat)
{
case CryptogramFormat.Des:
case CryptogramFormat.Rc2:
case CryptogramFormat.Rijndael:
case CryptogramFormat.TripleDes:
return CSPDecode(encryptionFormat, srcString, key, iv);
case CryptogramFormat.RSA:
return RSADecode(encryptionFormat, srcString, key, iv);
default:
{
return "不支持该种解密";
}
}
}
catch(Exception e)
{
return "解密异常:"+e.Message;
}
}
/**//// <summary>
/// 生成Key和IV
/// </summary>
/// <param name="encryptionFormat">加密格式</param>
/// <param name="key">Key</param>
/// <param name="iv">Iv</param>
/// <returns>返回是否成功生成Key和IV</returns>
public static bool GenerateKeyAndIV(CryptogramFormat encryptionFormat, ref string key, ref string iv)
{
try
{
switch (encryptionFormat)
{
case CryptogramFormat.MD5:
case CryptogramFormat.SHA1:
key = "不支持";
iv = "不支持";
break;
case CryptogramFormat.Des:
case CryptogramFormat.Rc2:
case CryptogramFormat.Rijndael:
case CryptogramFormat.TripleDes:
KeyAndIV(encryptionFormat,ref key,ref iv);
break;
case CryptogramFormat.RSA:
RSACryptoServiceProvider rsaD = new RSACryptoServiceProvider();
key = rsaD.ToXmlString(false);
iv = rsaD.ToXmlString(true);
break;
default:
{
return false;
}
}
}
catch
{
return false;
}
return true;
}
#endregion
//生成随机密码
#region 生成随机密码
/**//// <summary>
/// 生成随机密码
/// </summary>
/// <returns></returns>
public static string GenerateString()
{
return GenerateString(8);
}
/**//// <summary>
/// 生成随机密码
/// </summary>
/// <param name="keylength"></param>
/// <returns></returns>
public static string GenerateString(int keylength)
{
try
{
if (keylength <= 1)
return "SmartJavaer";
byte[] buff = new Byte[keylength/2];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(buff);
//return Convert.ToBase64String(buff);
StringBuilder sb = new StringBuilder(keylength);
int i;
for (i = 0; i < buff.Length; i++)
{
sb.Append(String.Format("{0:X2}", buff[i]));
}
return sb.ToString();
}
catch
{
return "SmartJavaer";
}
}
#endregion
}
#endregion
}
using System.IO;
using System.Text;
using System.Security.Cryptography;
using System.Web.Security;
//工程需要引用system.web.dll
/**//*
* 通用的安全密码类
*
* 本类库支持DES,RC2,Rijndael, TripleDes,RSA, MD5, SHA1等六种加密格式
*
* 注意:MD5, SHA1加密是不可逆的,所以不支持他们的解密;
*
* 支持生成Key/公钥,Iv/私钥及简单的随机字符;
*
* SmartJavaer
*
* SmartJavaer@163.com
*
* 2006/10/26
*
*/
namespace ManagePassword
{
//枚举加密格式
#region 枚举加密格式
/**//// <summary>
/// 枚举加密的格式
///
/// 对称加密:DES,RC2,RIJNDAEL,TripleDes
/// 非对称加密:DSA,RSA
/// 哈西加密:MD5,SHA1
///
/// </summary>
public enum CryptogramFormat { Des = 1, Rc2, Rijndael, TripleDes,RSA,MD5, SHA1 }
#endregion
//通用密码类
#region 通用密码类
/**//// <summary>
/// 一个通用的加密类
/// 支持DES,RC2,Rijndael, TripleDes,RSA, MD5, SHA1等六种加密格式
/// 注意:MD5, SHA1加密是不可逆的,所以不支持他们的解密;
/// 支持生成Key/公钥,Iv/私钥及简单的随机字符;
/// </summary>
public class Cryptogram
{
private Cryptogram() { }
//加密,解密内部处理
#region 加密,解密内部处理
/**//// <summary>
/// 生成Des,Rc2,Rijndael,TripleDes的处理对象
/// </summary>
/// <param name="encryptionFormat">加密格式</param>
/// <param name="key">Key</param>
/// <param name="iv">IV</param>
/// <returns>返回处理对象,若返回null,则表示生成失败;</returns>
private static SymmetricAlgorithm GetCSP(CryptogramFormat encryptionFormat,string key,string iv)
{
SymmetricAlgorithm mCSP;
switch (encryptionFormat)
{
case CryptogramFormat.Des:
{
mCSP = new DESCryptoServiceProvider();
break;
}
case CryptogramFormat.TripleDes:
{
mCSP = new TripleDESCryptoServiceProvider();
break;
}
case CryptogramFormat.Rc2:
{
mCSP = new RC2CryptoServiceProvider();
break;
}
case CryptogramFormat.Rijndael:
{
mCSP = new RijndaelManaged();
break;
}
default:
mCSP = null;
break;
}
if (mCSP == null)
return null;
if(key.Length==0)
// if(String.IsNullOrEmpty(key))
{
//mCSP.GenerateKey();
return null;
}
else
{
try
{
mCSP.Key = Convert.FromBase64String(key);
}
catch
{
//mCSP.GenerateKey();
return null;
}
}
if (iv.Length==0)
//if (String.IsNullOrEmpty(iv))
{
//mCSP.GenerateIV();
return null;
}
else
{
try
{
mCSP.IV = Convert.FromBase64String(iv);
}
catch
{
//mCSP.GenerateIV();
return null;
}
}
return mCSP;
}
/**//// <summary>
/// Des,Rc2,Rijndael,TripleDes加密
/// </summary>
/// <param name="encryptionFormat">加密格式</param>
/// <param name="srcString">欲加密的字符串</param>
/// <param name="key">Key</param>
/// <param name="iv">IV</param>
/// <returns>返回加密后的字符串,若返回null,则表示加密失败;</returns>
private static string CSPEncode(CryptogramFormat encryptionFormat, string srcString, string key, string iv)
{
SymmetricAlgorithm mCSP;
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
mCSP = GetCSP(encryptionFormat, key, iv);
if (mCSP == null)
return null;
try
{
ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
byt = Convert.FromBase64String(srcString);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}
catch
{
return null;
}
}
/**//// <summary>
/// Des,Rc2,Rijndael,TripleDes解密
/// </summary>
/// <param name="encryptionFormat"></param>
/// <param name="srcString"></param>
/// <param name="key"></param>
/// <param name="iv"></param>
/// <returns></returns>
private static string CSPDecode(CryptogramFormat encryptionFormat, string srcString, string key, string iv)
{
SymmetricAlgorithm mCSP;
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
mCSP = GetCSP(encryptionFormat, key, iv);
if (mCSP == null)
return null;
try
{
ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
byt = Convert.FromBase64String(srcString);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}
catch
{
return null;
}
}
/**//// <summary>
/// RSA加密
/// </summary>
/// <param name="encryptionFormat"></param>
/// <param name="srcString"></param>
/// <param name="key"></param>
/// <param name="iv"></param>
/// <returns></returns>
private static string RSAEncode(CryptogramFormat encryptionFormat, string srcString, string key, string iv)
{
RSACryptoServiceProvider rsa1 = new RSACryptoServiceProvider();
byte[] toEncryptData = null;
byte[] encryptedData = null;
try
{
rsa1.FromXmlString(key);
}
catch
{
return null;
}
try
{
rsa1.FromXmlString(iv);
}
catch
{
return null;
}
toEncryptData = Convert.FromBase64String(srcString);
encryptedData = rsa1.Encrypt(toEncryptData, false);//加密后的数据
return Convert.ToBase64String(encryptedData);
}
/**//// <summary>
/// RSA解密
/// </summary>
/// <param name="encryptionFormat"></param>
/// <param name="srcString"></param>
/// <param name="key"></param>
/// <param name="iv"></param>
/// <returns></returns>
private static string RSADecode(CryptogramFormat encryptionFormat, string srcString, string key, string iv)
{
RSACryptoServiceProvider rsaD = new RSACryptoServiceProvider();
byte[] encryptedData = null ;
byte[] decryptedData = null ;
try
{
rsaD.FromXmlString(key);
}
catch
{
return null;
}
try
{
rsaD.FromXmlString(iv);
}
catch
{
return null;
}
encryptedData = Convert.FromBase64String(srcString);
decryptedData = rsaD.Decrypt(encryptedData, false);//解密后的数据
return Convert.ToBase64String(decryptedData);
}
/**//// <summary>
/// 生成对称加密格式的Key和IV
/// </summary>
/// <param name="encryptionFormat">加密格式</param>
/// <param name="key"></param>
/// <param name="iv"></param>
private static void KeyAndIV(CryptogramFormat encryptionFormat, ref string key, ref string iv)
{
SymmetricAlgorithm mCSP;
switch (encryptionFormat)
{
case CryptogramFormat.Des:
{
mCSP = new DESCryptoServiceProvider();
break;
}
case CryptogramFormat.TripleDes:
{
mCSP = new TripleDESCryptoServiceProvider();
break;
}
case CryptogramFormat.Rc2:
{
mCSP = new RC2CryptoServiceProvider();
break;
}
case CryptogramFormat.Rijndael:
{
mCSP = new RijndaelManaged();
break;
}
default:
mCSP = null;
break;
}
mCSP.GenerateKey();
mCSP.GenerateIV();
key = Convert.ToBase64String(mCSP.Key);
iv = Convert.ToBase64String(mCSP.IV);
}
#endregion
//公共加密解密方法
#region 公共加密解密方法
/**//// <summary>
/// 加密方法
/// </summary>
/// <param name="encryptionFormat">加密格式</param>
/// <param name="srcString">欲加密字符串</param>
/// <returns>返回加密后的字符串;若返回null,表示失败</returns>
public static string Encrypt(CryptogramFormat encryptionFormat, string srcString)
{
try
{
switch (encryptionFormat)
{
case CryptogramFormat.MD5:
return FormsAuthentication.HashPasswordForStoringInConfigFile(srcString, "MD5");
case CryptogramFormat.SHA1:
return FormsAuthentication.HashPasswordForStoringInConfigFile(srcString, "SHA1");
case CryptogramFormat.Des:
case CryptogramFormat.Rc2:
case CryptogramFormat.Rijndael:
case CryptogramFormat.TripleDes:
case CryptogramFormat.RSA:
return "缺少参数";
default:
{
return "不支持该格式的加密";
}
}
}
catch (Exception e)
{
return "加密异常:" + e.Message;
}
}
/**//// <summary>
/// 加密方法
/// </summary>
/// <param name="encryptionFormat">加密格式</param>
/// <param name="srcString">欲加密字符串</param>
/// <param name="key">指定加密的Key</param>
/// <param name="iv">指定加密的IV</param>
/// <returns>返回加密后的字符串;若返回null,表示失败</returns>
public static string Encrypt(CryptogramFormat encryptionFormat, string srcString,string key,string iv)
{
try
{
switch (encryptionFormat)
{
case CryptogramFormat.MD5:
return FormsAuthentication.HashPasswordForStoringInConfigFile(srcString, "MD5");
case CryptogramFormat.SHA1:
return FormsAuthentication.HashPasswordForStoringInConfigFile(srcString, "SHA1");
case CryptogramFormat.Des:
case CryptogramFormat.Rc2:
case CryptogramFormat.Rijndael:
case CryptogramFormat.TripleDes:
return CSPEncode(encryptionFormat, srcString, key, iv);
//case CryptogramFormat.DSA:
// return DSAEncode(encryptionFormat, srcString, key, iv);
case CryptogramFormat.RSA:
return RSAEncode(encryptionFormat, srcString, key, iv);
default:
{
return null;
}
}
}
catch (Exception e)
{
return "加密异常:" + e.Message;
}
}
/**//// <summary>
/// 解密方法
/// </summary>
/// <param name="encryptionFormat">加密格式</param>
/// <param name="srcString">欲解密字符串</param>
/// <param name="key">指定解密的Key</param>
/// <param name="iv">指定解密的IV</param>
/// <returns>返回解密后的字符串;若返回null,表示失败</returns>
public static string Decrypt(CryptogramFormat encryptionFormat, string srcString, string key, string iv)
{
try
{
switch (encryptionFormat)
{
case CryptogramFormat.Des:
case CryptogramFormat.Rc2:
case CryptogramFormat.Rijndael:
case CryptogramFormat.TripleDes:
return CSPDecode(encryptionFormat, srcString, key, iv);
case CryptogramFormat.RSA:
return RSADecode(encryptionFormat, srcString, key, iv);
default:
{
return "不支持该种解密";
}
}
}
catch(Exception e)
{
return "解密异常:"+e.Message;
}
}
/**//// <summary>
/// 生成Key和IV
/// </summary>
/// <param name="encryptionFormat">加密格式</param>
/// <param name="key">Key</param>
/// <param name="iv">Iv</param>
/// <returns>返回是否成功生成Key和IV</returns>
public static bool GenerateKeyAndIV(CryptogramFormat encryptionFormat, ref string key, ref string iv)
{
try
{
switch (encryptionFormat)
{
case CryptogramFormat.MD5:
case CryptogramFormat.SHA1:
key = "不支持";
iv = "不支持";
break;
case CryptogramFormat.Des:
case CryptogramFormat.Rc2:
case CryptogramFormat.Rijndael:
case CryptogramFormat.TripleDes:
KeyAndIV(encryptionFormat,ref key,ref iv);
break;
case CryptogramFormat.RSA:
RSACryptoServiceProvider rsaD = new RSACryptoServiceProvider();
key = rsaD.ToXmlString(false);
iv = rsaD.ToXmlString(true);
break;
default:
{
return false;
}
}
}
catch
{
return false;
}
return true;
}
#endregion
//生成随机密码
#region 生成随机密码
/**//// <summary>
/// 生成随机密码
/// </summary>
/// <returns></returns>
public static string GenerateString()
{
return GenerateString(8);
}
/**//// <summary>
/// 生成随机密码
/// </summary>
/// <param name="keylength"></param>
/// <returns></returns>
public static string GenerateString(int keylength)
{
try
{
if (keylength <= 1)
return "SmartJavaer";
byte[] buff = new Byte[keylength/2];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(buff);
//return Convert.ToBase64String(buff);
StringBuilder sb = new StringBuilder(keylength);
int i;
for (i = 0; i < buff.Length; i++)
{
sb.Append(String.Format("{0:X2}", buff[i]));
}
return sb.ToString();
}
catch
{
return "SmartJavaer";
}
}
#endregion
}
#endregion
}
相关文章推荐
- DES,RC2,Rijndael, TripleDes,RSA, MD5, SHA1通用的安全密码类
- DES,RC2,Rijndael, TripleDes,RSA, MD5, SHA1通用的安全密码类
- DES, RC4, RC5, AES, RSA, MD5, SHA1 安全算法分析
- 自已封装了一个极其易用的加密解密类,支持DES、三重DES、Rijndael、RC2、MD5、以及非对称加密算法RSA
- 自已封装了一个极其易用的加密解密类,支持DES、三重DES、Rijndael、RC2、MD5、以及非对称加密算法RSA
- 简单的 Helper 封装 -- SecurityHelper 安全助手:封装加密算法(MD5、SHA、HMAC、DES、RSA)
- 加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用
- 密码学应用(DES,AES, MD5, SHA1, RSA, Salt, Pkcs8)
- RSA、AES、DES、MD5、SHA1几种加密算法的比较
- [C#] 简单的 Helper 封装 -- SecurityHelper 安全助手:封装加密算法(MD5、SHA、HMAC、DES、RSA)
- 简要介绍DES、RSA MD5 sha1 四种加密算法的优缺点
- 密码学应用(DES,AES, MD5, SHA1, RSA, Salt, Pkcs8)
- IPSec IKE-ISAKMP-DH AH-ESP MD5-SHA1 DES-3DES-AES-RSA
- 【原创】浅析密码学在互联网支付中的应用|RSA,Hash,AES,DES,3DES,SHA1,SHA256,MD5,SSL,Private Key,Public Key
- Base64,DES,RSA,SHA1,MD5 笔记
- 简要介绍DES、RSA MD5 sha1 四种加密算法的优缺点,以及使用场合
- Base64,DES,RSA,SHA1,MD5 笔记
- 简要介绍DES、RSA MD5 sha1 四种加密算法的优缺点,以及使用场合
- DES、3DES、AES、RSA、MD5、sha1 加密算法总结
- 网上的MD5、DES、RC2、Rijndael加密解密算法