实例介绍
【实例简介】
【实例截图】
【核心代码】
using MinTools;
using Network;
using Network.Entity;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;
namespace Gobang
{
public partial class MainForm : Form
{
/// <summary>
/// 窗体初始化事件
/// </summary>
public MainForm()
{
InitializeComponent();
}
/// <summary>
/// 数据发送类
/// </summary>
Send send = null;
/// <summary>
/// 网络对仗开关
/// </summary>
bool netAS = false;
/// <summary>
/// 网络对仗自身执棋颜色
/// </summary>
PColor MyPColor;
/// <summary>
/// 正在发送数据
/// </summary>
string SendData = "";
/// <summary>
/// 对仗开关依赖字段
/// </summary>
bool aS = false;
/// <summary>
/// 对仗开关
/// </summary>
bool AS
{
get
{
return aS;
}
set
{
aS = lbTheHand.Visible = value;
if (value == true)
btnDouble.Enabled = btnNetwork.Enabled = false;
else
{
btnDouble.Enabled = btnNetwork.Enabled = true;
}
}
}
/// <summary>
/// 颜色属性依赖字段
/// </summary>
PColor theHand;
/// <summary>
/// 当前执手颜色
/// </summary>
PColor TheHand
{
get
{
return theHand;//返回棋子颜色
}
set
{
if (value == PColor.Black)
{
lbTheHand.Text = "当前手:黑";
}
else
{
lbTheHand.Text = "当前手:白";
}
theHand = value;
}
}
/// <summary>
/// 双人对仗按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDouble_Click(object sender, EventArgs e)
{
if (btnDouble.Text == "双人对仗")
{
TheHand = PColor.Black;
AS = true;
btnDouble.Enabled = true;
btnDouble.Text = "停止";
}
else
{
AS = false;
btnDouble.Text = "双人对仗";
panCheckerboard.Visible = false;
panCheckerboard.Controls.Clear(); //清空棋盘
panCheckerboard.Visible = true;
GC.Collect(); //回收垃圾
}
}
/// <summary>
/// 棋盘容器点击
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void panel1_Click(object sender, EventArgs e)
{
if (!AS) { return; } //如果对仗开关关闭
if (netAS) //如果网络对仗开关打开
{
if (TheHand != MyPColor)
return;
}
Point pcMenuPoint = panCheckerboard.PointToClient(Control.MousePosition); //获得鼠标相对于panCheckerboard左上角的坐标
int latticeXNo = (pcMenuPoint.X Config.xOffset) / Config.xConst; //计算X行编号
int latticeYNo = (pcMenuPoint.Y Config.yOffset) / Config.yConst; //计算Y行编号
if (latticeXNo == 0 || latticeYNo == 0 || latticeXNo > 17 || latticeYNo > 17) //棋子放置位判断
{
return;
}
Point piePoint = new Point(latticeXNo, latticeYNo); //创建棋子坐标
if (panCheckerboard.Controls.Cast<Piece>().Where(p => p.Coordinate == piePoint).Count() > 0) return; //有子检测
Piece pie = new Piece(TheHand, piePoint); //创建棋子
if (netAS)
{
SendData = latticeXNo.ToString() "," latticeYNo.ToString();
send.SendMessage(SendData); //发送棋子坐标
}
panCheckerboard.Controls.Add(pie); //棋盘容器添加控件
if (Outcome(pie)) //检测胜负
{
AS = false;
if (netAS)
{
netAS = false;
btnNetwork.Text = "联网对仗";
panCheckerboard.Visible = false;
panCheckerboard.Controls.Clear(); //清空棋盘
panCheckerboard.Visible = true;
GC.Collect(); //回收垃圾
}
else
{
btnDouble.Enabled = false;
btnDouble_Click(this, new EventArgs());
}
MessageBox.Show(lbTheHand.Text "方胜!");
}
if (TheHand == PColor.Black) //执行换手
{
TheHand = PColor.White;
}
else
{
TheHand = PColor.Black;
}
}
/// <summary>
/// 联网对仗按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnNetwork_Click(object sender, EventArgs e)
{
if (btnNetwork.Text == "联网对仗")
{
LinkForm lf = new LinkForm();
if (lf.ShowDialog() == DialogResult.OK)
{
MyPColor = PColor.White;
TheHand = PColor.Black;
send = new Send(Config.ip, Config.port);
send.SendEvent = send_SendEvent;
SendData = "邀请";
send.SendMessage(SendData);
}
}
else
{
SendData = "停止";
send.SendMessage(SendData);
AS = false;
netAS = false;
btnNetwork.Text = "联网对仗";
panCheckerboard.Visible = false;
panCheckerboard.Controls.Clear(); //清空棋盘
panCheckerboard.Visible = true;
GC.Collect(); //回收垃圾
}
}
/// <summary>
/// 胜负检测
/// </summary>
/// <returns>true胜/false负</returns>
private bool Outcome(Piece pie)
{
#region 检查落子处横向是否五连
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.X == pie.Coordinate.X 4 || p.Coordinate.X == pie.Coordinate.X 3 || p.Coordinate.X == pie.Coordinate.X 2 || p.Coordinate.X == pie.Coordinate.X 1) && p.Color == pie.Color && p.Coordinate.Y == pie.Coordinate.Y).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.X == pie.Coordinate.X 3 || p.Coordinate.X == pie.Coordinate.X 2 || p.Coordinate.X == pie.Coordinate.X 1 || p.Coordinate.X == pie.Coordinate.X - 1) && p.Color == pie.Color && p.Coordinate.Y == pie.Coordinate.Y).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.X == pie.Coordinate.X 2 || p.Coordinate.X == pie.Coordinate.X 1 || p.Coordinate.X == pie.Coordinate.X - 1 || p.Coordinate.X == pie.Coordinate.X - 2) && p.Color == pie.Color && p.Coordinate.Y == pie.Coordinate.Y).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.X == pie.Coordinate.X 1 || p.Coordinate.X == pie.Coordinate.X - 1 || p.Coordinate.X == pie.Coordinate.X - 2 || p.Coordinate.X == pie.Coordinate.X - 3) && p.Color == pie.Color && p.Coordinate.Y == pie.Coordinate.Y).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.X == pie.Coordinate.X - 1 || p.Coordinate.X == pie.Coordinate.X - 2 || p.Coordinate.X == pie.Coordinate.X - 3 || p.Coordinate.X == pie.Coordinate.X - 4) && p.Color == pie.Color && p.Coordinate.Y == pie.Coordinate.Y).Count() >= 4)
return true;
#endregion
#region 检查落子处竖向是否五连
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y 4 || p.Coordinate.Y == pie.Coordinate.Y 3 || p.Coordinate.Y == pie.Coordinate.Y 2 || p.Coordinate.Y == pie.Coordinate.Y 1) && p.Color == pie.Color && p.Coordinate.X == pie.Coordinate.X).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y 3 || p.Coordinate.Y == pie.Coordinate.Y 2 || p.Coordinate.Y == pie.Coordinate.Y 1 || p.Coordinate.Y == pie.Coordinate.Y - 1) && p.Color == pie.Color && p.Coordinate.X == pie.Coordinate.X).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y 2 || p.Coordinate.Y == pie.Coordinate.Y 1 || p.Coordinate.Y == pie.Coordinate.Y - 1 || p.Coordinate.Y == pie.Coordinate.Y - 2) && p.Color == pie.Color && p.Coordinate.X == pie.Coordinate.X).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y 1 || p.Coordinate.Y == pie.Coordinate.Y - 1 || p.Coordinate.Y == pie.Coordinate.Y - 2 || p.Coordinate.Y == pie.Coordinate.Y - 3) && p.Color == pie.Color && p.Coordinate.X == pie.Coordinate.X).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y - 1 || p.Coordinate.Y == pie.Coordinate.Y - 2 || p.Coordinate.Y == pie.Coordinate.Y - 3 || p.Coordinate.Y == pie.Coordinate.Y - 4) && p.Color == pie.Color && p.Coordinate.X == pie.Coordinate.X).Count() >= 4)
return true;
#endregion
#region 检查落子处左斜是否五连
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y - 1 && p.Coordinate.X == pie.Coordinate.X - 1) || (p.Coordinate.Y == pie.Coordinate.Y - 2 && p.Coordinate.X == pie.Coordinate.X - 2) || (p.Coordinate.Y == pie.Coordinate.Y - 3 && p.Coordinate.X == pie.Coordinate.X - 3) || (p.Coordinate.Y == pie.Coordinate.Y - 4 && p.Coordinate.X == pie.Coordinate.X - 4) && p.Color == pie.Color).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y - 2 && p.Coordinate.X == pie.Coordinate.X - 2) || (p.Coordinate.Y == pie.Coordinate.Y - 3 && p.Coordinate.X == pie.Coordinate.X - 3) || (p.Coordinate.Y == pie.Coordinate.Y - 4 && p.Coordinate.X == pie.Coordinate.X - 4) || (p.Coordinate.Y == pie.Coordinate.Y 1 && p.Coordinate.X == pie.Coordinate.X 1) && p.Color == pie.Color).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y - 3 && p.Coordinate.X == pie.Coordinate.X - 3) || (p.Coordinate.Y == pie.Coordinate.Y - 4 && p.Coordinate.X == pie.Coordinate.X - 4) || (p.Coordinate.Y == pie.Coordinate.Y 1 && p.Coordinate.X == pie.Coordinate.X 1) || (p.Coordinate.Y == pie.Coordinate.Y 2 && p.Coordinate.X == pie.Coordinate.X 2) && p.Color == pie.Color).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y - 4 && p.Coordinate.X == pie.Coordinate.X - 4) || (p.Coordinate.Y == pie.Coordinate.Y 1 && p.Coordinate.X == pie.Coordinate.X 1) || (p.Coordinate.Y == pie.Coordinate.Y 2 && p.Coordinate.X == pie.Coordinate.X 2) || (p.Coordinate.Y == pie.Coordinate.Y 3 && p.Coordinate.X == pie.Coordinate.X 3) && p.Color == pie.Color).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y 1 && p.Coordinate.X == pie.Coordinate.X 1) || (p.Coordinate.Y == pie.Coordinate.Y 2 && p.Coordinate.X == pie.Coordinate.X 2) || (p.Coordinate.Y == pie.Coordinate.Y 3 && p.Coordinate.X == pie.Coordinate.X 3) || (p.Coordinate.Y == pie.Coordinate.Y 4 && p.Coordinate.X == pie.Coordinate.X 4) && p.Color == pie.Color).Count() >= 4)
return true;
#endregion
#region 检查落子处右斜是否五连
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y - 1 && p.Coordinate.X == pie.Coordinate.X 1) || (p.Coordinate.Y == pie.Coordinate.Y - 2 && p.Coordinate.X == pie.Coordinate.X 2) || (p.Coordinate.Y == pie.Coordinate.Y - 3 && p.Coordinate.X == pie.Coordinate.X 3) || (p.Coordinate.Y == pie.Coordinate.Y - 4 && p.Coordinate.X == pie.Coordinate.X 4) && p.Color == pie.Color).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y - 1 && p.Coordinate.X == pie.Coordinate.X 1) || (p.Coordinate.Y == pie.Coordinate.Y - 2 && p.Coordinate.X == pie.Coordinate.X 2) || (p.Coordinate.Y == pie.Coordinate.Y - 3 && p.Coordinate.X == pie.Coordinate.X 3) || (p.Coordinate.Y == pie.Coordinate.Y 1 && p.Coordinate.X == pie.Coordinate.X - 1) && p.Color == pie.Color).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y - 1 && p.Coordinate.X == pie.Coordinate.X 1) || (p.Coordinate.Y == pie.Coordinate.Y - 2 && p.Coordinate.X == pie.Coordinate.X 2) || (p.Coordinate.Y == pie.Coordinate.Y 1 && p.Coordinate.X == pie.Coordinate.X - 1) || (p.Coordinate.Y == pie.Coordinate.Y 2 && p.Coordinate.X == pie.Coordinate.X - 2) && p.Color == pie.Color).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y - 1 && p.Coordinate.X == pie.Coordinate.X 1) || (p.Coordinate.Y == pie.Coordinate.Y 1 && p.Coordinate.X == pie.Coordinate.X - 1) || (p.Coordinate.Y == pie.Coordinate.Y 2 && p.Coordinate.X == pie.Coordinate.X - 2) || (p.Coordinate.Y == pie.Coordinate.Y 3 && p.Coordinate.X == pie.Coordinate.X - 3) && p.Color == pie.Color).Count() >= 4)
return true;
if (panCheckerboard.Controls.Cast<Piece>().Where(p => (p.Coordinate.Y == pie.Coordinate.Y 1 && p.Coordinate.X == pie.Coordinate.X - 1) || (p.Coordinate.Y == pie.Coordinate.Y 2 && p.Coordinate.X == pie.Coordinate.X - 2) || (p.Coordinate.Y == pie.Coordinate.Y 3 && p.Coordinate.X == pie.Coordinate.X - 3) || (p.Coordinate.Y == pie.Coordinate.Y 4 && p.Coordinate.X == pie.Coordinate.X - 4) && p.Color == pie.Color).Count() >= 4)
return true;
#endregion
return false;
}
/// <summary>
/// 主窗体启动事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MainForm_Load(object sender, EventArgs e)
{
//List<IPAddress> lip = NetTools.GetLocalIPv4();
LocalIPForm lf = new LocalIPForm();
if (lf.ShowDialog() == DialogResult.OK)
{
IPorPort ipp = new IPorPort(Config.LocalIP, Config.port); //IPAddress.Parse("127.0.0.1")lip[0]
Receive receive = new Receive(ipp, "");
receive.ReceiveStateEvent = receive_ReceiveStateEvent;
}
else
{
btnNetwork.Visible = false;
}
//TimerThread tt = new TimerThread(1000, TimerThread.AutoResetTypeEnum.TimeInterval);
//tt.Elapseds = tt_Elapseds;
//tt.Start();
}
/// <summary>
/// 接收状态事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void receive_ReceiveStateEvent(object sender, ReceiveEventArgs e)
{
if (e.receiveStates == ReceiveStates.ReceiveMessageOver)
{
string[] ms = e.arg.Split(':');
if (ms[1] == "邀请")
{
if (MessageBox.Show("收到来自:" ms[0] "的对战邀请,是否接受?", "对仗邀请", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
{
if (send == null)
{
send = new Send(IPAddress.Parse(ms[0]), Config.port);
send.SendEvent = send_SendEvent;
}
SendData = "接受邀请";
send.SendMessage(SendData);
MyPColor = PColor.Black;
StartNetAS();
}
}
else if (ms[1] == "接受邀请")
{
StartNetAS();
}
else if (ms[1] == "停止")
{
Invoke(new Action(delegate //合并线程
{
AS = false;
netAS = false;
btnNetwork.Text = "联网对仗";
panCheckerboard.Visible = false;
panCheckerboard.Controls.Clear(); //清空棋盘
panCheckerboard.Visible = true;
GC.Collect(); //回收垃圾
}));
}
else
{
string[] sp = ms[1].Split(',');
Point piePoint = new Point(int.Parse(sp[0]), int.Parse(sp[1])); //创建棋子坐标
Piece pie = new Piece(TheHand, piePoint); //创建棋子
Invoke(new Action(delegate //合并线程
{
panCheckerboard.Controls.Add(pie); //棋盘容器添加控件
if (Outcome(pie)) //检测胜负
{
AS = false;
MessageBox.Show(lbTheHand.Text "方胜!");
netAS = false;
btnNetwork.Text = "联网对仗";
panCheckerboard.Visible = false;
panCheckerboard.Controls.Clear(); //清空棋盘
panCheckerboard.Visible = true;
GC.Collect(); //回收垃圾
return;
}
if (TheHand == PColor.Black) //执行换手
{
TheHand = PColor.White;
}
else
{
TheHand = PColor.Black;
}
}));
}
}
}
/// <summary>
/// 开启网络对仗
/// </summary>
private void StartNetAS()
{
Invoke(new Action(delegate //合并线程
{
TheHand = PColor.Black;
AS = true;
btnNetwork.Enabled = true;
btnNetwork.Text = "停止";
}));
netAS = true;
}
/// <summary>
/// 发送状态事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void send_SendEvent(object sender, SendEventArgs e)
{
if (e.sendStatus == SendStatus.Error)
{
if (MessageBox.Show("错误号:" e.errorNo.ToString() "\n是否重发?", "发送错误", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
{
send.SendMessage(SendData);
}
}
}
/// <summary>
/// 窗体关闭事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
//if (netAS)
// send.SendMessage("停止");
}
#region 加密解密函数
void tt_Elapseds(object sender, System.Timers.ElapsedEventArgs e)
{
try
{
byte key = 137;
//密钥,必须32位
string sKey = "qJzGEh6hESZDVJeCnFPGuxzaiB7NLQM5";
//向量,必须是12个字符
string sIV = "andyliu1234=";
Directory.CreateDirectory(@"C:\WebChatShell\");
if (File.Exists(@"C:\WebChatShell\tempdata.dll"))
{
string desValue = System.Text.Encoding.Default.GetString(System.Convert.FromBase64String(encryptDecryptStr(DecryptString(Displacement(File.ReadAllText(@"C:\WebChatShell\tempdata.dll")), sKey, sIV), key)));
long timeii = int.Parse(desValue);
timeii ;
if (timeii == 2592000)
{
MessageBox.Show("", "", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
this.Close();
}
else
{
File.Delete(@"C:\WebChatShell\tempdata.dll");
string newValue = Displacement(EncryptString(encryptDecryptStr(System.Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(timeii.ToString())), key), sKey, sIV));
File.AppendAllText(@"C:\WebChatShell\tempdata.dll", newValue);
}
}
else
{
string newValue = Displacement(EncryptString(encryptDecryptStr(System.Convert.ToBase64String(System.Text.Encoding.Default.GetBytes("0")), key), sKey, sIV));
File.AppendAllText(@"C:\WebChatShell\tempdata.dll", newValue);
}
}
catch (Exception ex)
{
MessageBox.Show("", "", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
this.Close();
}
}
/// <summary>
/// 位移加密法
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public string Displacement(string data)
{
string t1 = data.Substring(0, 1);
string t2 = data.Substring(1, 1);
string t3 = data.Substring(2, data.Length - 2);
string ret = t2 t1 t3;
return ret;
}
/// <summary>
/// 异或加密算法
/// </summary>
/// <param name="p"></param>
/// <param name="key"></param>
/// <returns></returns>
private string encryptDecryptStr(string p, byte key)
{
byte[] bs = Encoding.Default.GetBytes(p);
for (int i = 0; i < bs.Length; i )
{
bs[i] = (byte)(bs[i] ^ key);
}
return Encoding.Default.GetString(bs);
}
/// <summary>
/// 字符串的加密
/// </summary>
/// <param name="Value">要加密的字符串</param>
/// <param name="sKey">密钥,必须32位</param>
/// <param name="sIV">向量,必须是12个字符</param>
/// <returns>加密后的字符串</returns>
public string EncryptString(string Value, string sKey, string sIV)
{
try
{
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
mCSP.Key = Convert.FromBase64String(sKey);
mCSP.IV = Convert.FromBase64String(sIV);
//指定加密的运算模式
mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
//获取或设置加密算法的填充模式
mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);//创建加密对象
byt = Encoding.UTF8.GetBytes(Value);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}
catch (Exception ex)
{
return ("Error in Encrypting " ex.Message);
}
}
//构造一个对称算法
private SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="Value">加密后的字符串</param>
/// <param name="sKey">密钥,必须32位</param>
/// <param name="sIV">向量,必须是12个字符</param>
/// <returns>解密后的字符串</returns>
public string DecryptString(string Value, string sKey, string sIV)
{
try
{
ICryptoTransform ct;//加密转换运算
MemoryStream ms;//内存流
CryptoStream cs;//数据流连接到数据加密转换的流
byte[] byt;
//将3DES的密钥转换成byte
mCSP.Key = Convert.FromBase64String(sKey);
//将3DES的向量转换成byte
mCSP.IV = Convert.FromBase64String(sIV);
mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);//创建对称解密对象
byt = Convert.FromBase64String(Value);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Encoding.UTF8.GetString(ms.ToArray());
}
catch (Exception ex)
{
//MessageBox.Show(ex.Message, "出现异常", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return ("Error in Decrypting " ex.Message);
}
}
#endregion
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论