今天看到第七章120页;
学习到的知识:
字符和字符串的定义及处理
StringBuilder和String类的区别;
字符串加密与解密,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace EDString
{
class Program
{
static string encryptKey = "Oyea"; //定义密钥
#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
#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
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();
}
}
}
根据汉子获得区位码,代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GetCodeByChinese
{
class Program
{
static void Main(string[] args)
{
while (true) //定义一个死循环,以便可以循环输入信息
{
Console.Write("请输入要查找的汉字:"); //提示输入信息
string strChinese = Console.ReadLine(); //定义一个字符串,记录输入的汉字
byte[] array = new byte[2]; //定义一个字节数组,用户存储汉字
array = Encoding.Default.GetBytes("" + strChinese + ""); //为字节数组赋值
int front = (short)(array[0] - '\0'); //将字节数组的第一位转换成int类型
int back = (short)(array[1] - '\0'); //将字节数组的第二位转换成int类型
Console.WriteLine(Convert.ToString(front - 160) + (back - 160).ToString("00"));//计算区位码并输出
}
}
}
}