111,126
社区成员
发帖
与我相关
我的任务
分享
public static string SHA1Encrypt(string source)
{
//格式化目标字符串
byte[] sourcebytes = ASCIIEncoding.ASCII.GetBytes(source);
byte[] SHA1bytes = null;
//声明SHA-1加密算法类对象
SHA1Managed SHA1 = new SHA1Managed();
//将格式化后目标字节数组加密
SHA1bytes = SHA1.ComputeHash(sourcebytes);
string strSHA1 = "";
//遍历数组中的元素,若位数不足则按照64进制进行补位
for (int i = 0; i < SHA1bytes.Length; i++)
{
if (SHA1bytes[i] <= 15)
{
strSHA1 += ("0" + SHA1bytes[i].ToString("X"));
}
else
{
strSHA1 += SHA1bytes[i].ToString("X");
}
}
//释放内存中的对象
sourcebytes = null;
SHA1bytes = null;
SHA1.Clear();
return strSHA1;
}
public static string SHA256Encrypt(string source)
{
//格式化目标字符串
byte[] sourcebytes = ASCIIEncoding.ASCII.GetBytes(source);
byte[] SHA256bytes = null;
//声明SHA-1加密算法类对象
SHA256Managed SHA256 = new SHA256Managed();
//将格式化后目标字节数组加密
SHA256bytes = SHA256.ComputeHash(sourcebytes);
string strSHA256 = "";
//遍历数组中的元素,若位数不足则按照64进制进行补位
for (int i = 0; i < SHA256bytes.Length; i++)
{
if (SHA256bytes[i] <= 15)
{
strSHA256 += ("0" + SHA256bytes[i].ToString("X"));
}
else
{
strSHA256 += SHA256bytes[i].ToString("X");
}
}
//释放内存中的对象
sourcebytes = null;
SHA256bytes = null;
SHA256.Clear();
return strSHA256;
}
public static string SHA512Encrypt(string source)
{
//格式化目标字符串
byte[] sourcebytes = ASCIIEncoding.ASCII.GetBytes(source);
byte[] SHA512bytes = null;
//声明SHA-1加密算法类对象
SHA512Managed SHA512 = new SHA512Managed();
//将格式化后目标字节数组加密
SHA512bytes = SHA512.ComputeHash(sourcebytes);
string strSHA512 = "";
//遍历数组中的元素,若位数不足则按照64进制进行补位
for (int i = 0; i < SHA512bytes.Length; i++)
{
if (SHA512bytes[i] <= 15)
{
strSHA512 += ("0" + SHA512bytes[i].ToString("X"));
}
else
{
strSHA512 += SHA512bytes[i].ToString("X");
}
}
//释放内存中的对象
sourcebytes = null;
SHA512bytes = null;
SHA512.Clear();
return strSHA512;
}
/// <summary>
/// RSA加密算法产生私钥和公钥
/// </summary>
/// <param name="xmlKeys">XML格式私钥</param>
/// <param name="xmlPublicKey">XML格式公钥</param>
public void RSAKey(out string xmlKeys, out string xmlPublicKey)
{
try
{
System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
//私钥
xmlKeys = rsa.ToXmlString(true);
//公钥
xmlPublicKey = rsa.ToXmlString(false);
}
catch (Exception ex)
{
throw ex;
}
}
//##############################################################################
//RSA 方式加密
//说明KEY必须是XML的行式,返回的是字符串
//在有一点需要说明!!该加密方式有 长度 限制的!!
//##############################################################################
//RSA的加密函数
public string RSAEncrypt(string xmlPublicKey, string m_strEncryptString)
{
try
{
byte[] PlainTextBArray;
byte[] CypherTextBArray;
string Result;
System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(xmlPublicKey);
PlainTextBArray = UnicodeEncoding.Unicode.GetBytes(m_strEncryptString);//(new UnicodeEncoding()).GetBytes(m_strEncryptString);
CypherTextBArray = rsa.Encrypt(PlainTextBArray,false);
Result = Convert.ToBase64String(CypherTextBArray);
return Result;
}
catch (Exception ex)
{
throw ex;
}
}
public static string GetMd5HashString(string source)
{
//格式化目标字符串
byte[] sourcebytes = ASCIIEncoding.ASCII.GetBytes(source);
byte[] MD5bytes = null;
//声明MD5加密类对象
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
//生成MD5加密数组
MD5bytes = md5.ComputeHash(sourcebytes);
string strMd5 = "";
//遍历数组中的元素,若位数不足则按照十六进制进行补位
for (int i = 0; i < MD5bytes.Length; i++)
{
if (MD5bytes[i] <= 15)
{
strMd5 += ("0" + MD5bytes[i].ToString("X"));
}
else
{
strMd5 += MD5bytes[i].ToString("X");
}
}
//释放内存中保存的对象
sourcebytes = null;
MD5bytes = null;
md5.Clear();
return strMd5;
}
public string DesEncrypt(string strText, string strEncrKey)//加密函数
{
byte[] byKey = null;
byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byKey = UnicodeEncoding.Unicode.GetBytes(strEncrKey.Substring(0, strEncrKey.Length));
//for (int i = 0; i < 8; i++)
//{
//des.Key[i] = byKey[i];
//}
//des.IV = IV;
byte[] inputByteArray = UnicodeEncoding.Unicode.GetBytes(strText);
MemoryStream ms = new MemoryStream(inputByteArray);
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey,IV), CryptoStreamMode.Write);
cs.Flush();
return Convert.ToBase64String(ms.ToArray(), Base64FormattingOptions.None);
//return Convert.ToBase64String(des.CreateEncryptor().TransformFinalBlock(inputByteArray, 0, inputByteArray.Length));
}
catch (System.Exception error)
{
return "error:" + error.Message + "\r\n" + error.StackTrace;
}
}
public string DesEncrypt(string strText, byte[] Key)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = UnicodeEncoding.Unicode.GetBytes(strText);
byte[] IV = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
MemoryStream ms = new MemoryStream(inputByteArray);
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(Key, IV), CryptoStreamMode.Write);
cs.Flush();
return Convert.ToBase64String(ms.ToArray(), Base64FormattingOptions.None);
//return Convert.ToBase64String(des.CreateEncryptor().TransformFinalBlock(buffer,0,buffer.Length));
}
/// <summary>
/// 得到解密后字符串
/// </summary>
/// <param name="strText">解密字符串</param>
/// <param name="sDecrKey">密钥</param>
/// <returns>解密后字符串</returns>
public string DesDecrypt(string strText, string sDecrKey)//解密函数
{
byte[] byKey = null;
byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
byte[] inputByteArray = new Byte[strText.Length];
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byKey = UnicodeEncoding.Unicode.GetBytes(sDecrKey.Substring(0, sDecrKey.Length));
for (int i = 0; i < 8; i++)
{
des.Key[i] = byKey[i];
}
des.IV = IV;
inputByteArray = Convert.FromBase64String(strText);
return UnicodeEncoding.Unicode.GetString(des.CreateDecryptor().TransformFinalBlock(inputByteArray, 0, inputByteArray.Length));
}
catch (System.Exception error)
{
return "error:" + error.Message + "\r\n" + error.StackTrace;
}
}
public string DesDecrypt(string strText, byte[] Key)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] buffer = Convert.FromBase64String(strText);
byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
MemoryStream ms = new MemoryStream(buffer);
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(Key, IV), CryptoStreamMode.Write);
cs.Flush();
return UnicodeEncoding.Unicode.GetString(ms.ToArray());
//return UnicodeEncoding.Unicode.GetString(des.CreateDecryptor().TransformFinalBlock(buffer,0,buffer.Length));
}