字符串进行加密与解密。
来源:互联网 发布:所属用例优化 编辑:程序博客网 时间:2024/05/22 04:36
设计应用程序时,为了防止一些敏感信息的泄露,通常需要对这些信息进行加密。以用户的登录密码为例,如果密码以明文的形式存储在数据表中,很容易就会被人发现;相反,如果密码以密文的形式储存,即使别人从数据表中发现了密码,也是加密之后的密码,根本不能使用。通过对密码进行加密,能够极大地提高系统的保密性。下面通过一个实例讲解如何对字符串进行加密与解密。
例 创建一个控制台应用程序,命名为EDString。在该程序中定义一个静态的字符串变量,用来记录加密密钥。代码如下:
static string encryptKey = "Oyea";//定义密钥
自定义一个返回值类型为string类型的Encrypt方法,用来对字符串进行加密。该方法中有一个string类型的参数,用来表示要加密的字符串。Encrypt方法实现代码如下:
#region 加密字符串
/// <summary>
/// 加密字符串
/// </summary>
/// <param name="str">要加密的字符串</param>
/// <returns>加密后的字符串</returns>
static string Encrypt(string str)
{
DESCryptoServiceProvider descsp = new DESCryptoServiceProvider(); //实例化加/解密类对象
byte[] key = Encoding.Unicode.GetBytes(encryptKey);//定义字节数组,用来存储密钥
byte[] data = Encoding.Unicode.GetBytes(str); //定义字节数组,用来存储要加密的字符串
MemoryStream MStream = new MemoryStream(); //实例化内存流对象
//使用内存流实例化加密流对象
CryptoStream CStream = new CryptoStream(MStream, descsp.CreateEncryptor(key, key), CryptoStreamMode.Write);
CStream.Write(data, 0, data.Length); //向加密流中写入数据
CStream.FlushFinalBlock(); //释放加密流
return Convert.ToBase64String(MStream.ToArray());//返回加密后的字符串
}
#endregion
说明:由于加密、解密字符串时,需要用到加密类和内存流,所以首先需要在命名空间区域添加System.Security.Cryptography和System.IO命名空间。
自定义一个返回值类型为string类型的Decrypt方法,用来对加密后的字符串进行解密。该方法中有一个string类型的参数,用来表示要解密的字符串。Decrypt方法实现代码如下:
#region 解密字符串
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str">要解密的字符串</param>
/// <returns>解密后的字符串</returns>
static string Decrypt(string str)
{
DESCryptoServiceProvider descsp = new DESCryptoServiceProvider();//实例化加/解密类对象
byte[] key = Encoding.Unicode.GetBytes(encryptKey);//定义字节数组,用来存储密钥
byte[] data = Convert.FromBase64String(str); //定义字节数组,用来存储要解密的字符串
MemoryStream MStream = new MemoryStream();//实例化内存流对象
//使用内存流实例化解密流对象
CryptoStream CStream = new CryptoStream(MStream, descsp.CreateDecryptor(key, key), CryptoStreamMode.Write);
CStream.Write(data, 0, data.Length); //向解密流中写入数据
CStream.FlushFinalBlock(); //释放解密流
return Encoding.Unicode.GetString(MStream.ToArray());//返回解密后的字符串
}
#endregion
在Main方法中,首先提示输入信息;然后定义一个string类型的变量,用来记录输入的字符串;之后调用自定义方法Encrypt加密输入的字符串,并使用一个string类型的变量记录该字符串;接着调用自定义方法Decrypt对该字符串进行解密;最后分别输出加密和解密后的字符串。Main方法实现代码如下:
static void Main(string[] args)
{
Console.Write("请输入要加密的字符串:"); //提示输入字符串
Console.WriteLine(); //换行输入
string strOld = Console.ReadLine(); //记录输入的字符串
string strNew = Encrypt(strOld); //加密字符串
Console.WriteLine("加密后的字符串:" + strNew);//输出加密后的字符串
Console.WriteLine("解密后的字符串:" + Decrypt(strNew));//解密字符串并输出
Console.ReadLine();
}
程序运行结果如图所示。
——摘自《C#编程词典》
- 字符串进行加密与解密。
- 字符串加密与解密
- 字符串加密与解密
- 字符串-加密与解密
- java 字符串加密与解密
- 字符串的加密与解密
- 字符串的加密与解密
- java字符串加密与解密
- 字符串的加密与解密
- 怎样对字符串进行加密/解密
- js对字符串进行加密和解密
- js 对字符串进行加密解密
- 对文件进行DES加密与解密
- 利用 BASE64Encoder 对字符串进行加密 BASE64Decoder进行解密
- 利用 BASE64Encoder 对字符串进行加密 BASE64Decoder进行解密
- java 对字符串DES加密与解密
- C# 简单字符串加密与解密
- 字符串的(编码/加密)与(解码/解密)
- 基于javase的文件搜索软件
- 寻找朋友
- 读《时间投资法》笔记1--10倍规则
- Servlet认识一
- java路径
- 字符串进行加密与解密。
- gdfg
- 关于顺序表
- 读《时间投资法》笔记2--时间管理上不能做的三件事
- 献给所有正在找路的人
- Qedit.h问题
- 笑话。。。
- 二叉树的三种遍历和删除
- 关于C++的一些学习体会!