您的位置:首页 > 其它

des+base加密解密

2016-07-12 15:37 381 查看
des+base加密解密:

private void btnEncrypt_Click(object sender, EventArgs e)
{
string strCodeKey = "jsxx2016";
string strCode = txtCode.Text;
string strData = txtData.Text;

#region 加密
string strEncryptCode = EncryptToBase64(EncryptToDES(strCode, strCodeKey));
string strEncryptData= EncryptToBase64(EncryptToDES(strData, strCode));
#endregion

#region 赋值显示
txtEncryptCode.Text = strEncryptCode;
txtEncryptData.Text = strEncryptData;
#endregion

#region 解密
string strDecryptCode = DecryptFromDES(DecryptFromBase64(strEncryptCode), strCodeKey);
string strDecryptData = DecryptFromDES(DecryptFromBase64(strEncryptData), strDecryptCode);
lblDecryptCode.Text = strDecryptCode;
lblDecryptData.Text = strDecryptData;
#endregion
}
#region Base64加解密
/// <summary>
/// Base64解密
/// </summary>
/// <param name="strText"></param>
/// <returns></returns>
public static string DecryptFromBase64(string strText)
{
byte[] outputb = Convert.FromBase64String(strText);
string strResult = Encoding.Default.GetString(outputb);
return strResult;
}

/// <summary>
/// Base64加密
/// </summary>
/// <param name="strText"></param>
/// <returns></returns>
public static string EncryptToBase64(string strText)
{
byte[] bytes = Encoding.Default.GetBytes(strText);
string strResult = Convert.ToBase64String(bytes);
return strResult;
}
#endregion

#region DES加解密
/// <summary>
/// DES加密
/// </summary>
/// <param name="text"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string EncryptToDES(string text, string key)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(text);

byte[] a = ASCIIEncoding.ASCII.GetBytes(key);
des.Key = ASCIIEncoding.ASCII.GetBytes(key);
des.IV = ASCIIEncoding.ASCII.GetBytes(key);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);

cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();

StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);//将第一个参数转换为十六进制数,长度为2,不足前面补0
}
return ret.ToString();
}
/// <summary>
/// DES解密
/// </summary>
/// <param name="cyphertext"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string DecryptFromDES(string cyphertext, string key)
{
if (string.IsNullOrEmpty(cyphertext))
return string.Empty;
DESCryptoServiceProvider des = new DESCryptoServiceProvider();

byte[] inputByteArray = new byte[cyphertext.Length / 2];
for (int x = 0; x < cyphertext.Length / 2; x++)
{
int i = (Convert.ToInt32(cyphertext.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}

des.Key = ASCIIEncoding.ASCII.GetBytes(key);
des.IV = ASCIIEncoding.ASCII.GetBytes(key);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();

StringBuilder ret = new StringBuilder();

return System.Text.Encoding.GetEncoding("UTF-8").GetString(ms.ToArray());
}
#endregion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: