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
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
相关文章推荐
- Android Activity的四种launchmode
- mysql sql语句的用法
- angularjs自定义指令的用法
- C语言 二叉树的链式存储实例
- Leetcode 206. Reverse Linked List (Easy) (cpp)
- [转] 四种常见的 POST 提交数据方式
- 简陋hash算法
- Java操纵postgresql
- ECMAScript 6 学习系列课程笔记
- 可左右上下滑动切换图片的界面
- 26javascript基于对象
- 【Android】根据宽度自动调整(参照图片本身尺寸)高度
- [记录]移植驱动完毕后加载时的version magic报错原因以及解决办法(invalid module format)
- UVa11181 Probability|Given DFS+概率
- [Angularjs]ng-file-upload上传文件
- 如何打开无线网卡开关?
- 法线从object space到eye space的转换((normal matrix)
- linux 下git服务器
- 25javascript的prototype
- Android自定义view详解