private void radioBtnFlie_CheckedChanged(object sender, EventArgs e)
{
RadioButton rb = sender as RadioButton;
if (rb != null)
{
if (rb.Checked)
lblTip.Text = "文件:";
else
lblTip.Text = "字符串:";
}
}

RadioButton切换

private void txtStr_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{//拖进来的是文件
e.Effect = DragDropEffects.Link;
txtStr.Cursor = Cursors.Arrow;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void txtStr_DragDrop(object sender, DragEventArgs e)
{
string value = (e.Data.GetData(DataFormats.FileDrop) as System.Array).GetValue().ToString();
txtStr.Cursor = Cursors.IBeam;
txtStr.Text = value;
//文件转MD5
StringBuilder sbResult = new StringBuilder();
using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create())
{
byte[] byteArr = File.ReadAllBytes(value);
byte[] bytes = md5.ComputeHash(byteArr);
for (int i = ; i < bytes.Length; i++)
{
sbResult.Append(bytes[i].ToString("x2"));
}
}
txtMD5.Text = sbResult.ToString();
}

鼠标拖动文件到第一个大文本框触发事件-将文件转换为MD5

private void txtStr_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\x1')
{//Ctrl+A-全选
(sender as TextBox).SelectAll();
e.Handled = true;
}
}

第一个大文本框Ctrl+A全选

private void txtStr_KeyUp(object sender, KeyEventArgs e)
{
string str = txtStr.Text;
if (str.Length > && radioBtnString.Checked)
{
//字符串转MD5
byte[] bytes = Encoding.UTF8.GetBytes(str);
using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create())
{
byte[] md5Bytes = md5.ComputeHash(bytes);
StringBuilder sbResult = new StringBuilder();
for (int i = ; i < md5Bytes.Length; i++)
{
//十六进制占两位
sbResult.Append(md5Bytes[i].ToString("x2"));
}
txtMD5.Text = sbResult.ToString();
}
}
}

第一个大文本框按键松开后的事件(Ctrl+V或输入字符串)

private void btnCompare_Click(object sender, EventArgs e)
{
//比较MD5值
string text1 = txtMD5.Text.Trim();
string text2 = txtRefer.Text.Trim();
if (text1 == text2 && text1.Length > )
{
MessageBox.Show("MD5值相同");
}
else
{
MessageBox.Show("MD5值不相同");
}
}

按钮比较MD5事件

MD5计算器的更多相关文章

  1. [开源]入坑Qt,我的第一个小程序:MD5计算器

    版权声明 --------- 本文仅在知乎与博客园发布.开发者为szx0427 MFC和Win32搞了好几年了,也算是懂了个皮毛,但是一直觉得用这两者开发软件都很麻烦,需要将大量的代码花费在UI等地方 ...

  2. MD5算法【计算文件和字符串的MD5值】

    1. MD5算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错).任何长度的任意内容都可以用MD5计算出散列值.MD5的前身:MD2.MD3.MD4.介绍工具:CalcMD5 ...

  3. MD5加密和sha加密

    sha加密原理Algorithm)又叫安全哈希加密技术,是当今世界最先近的加密算法.主要用于文件身份识别.数字签名和口令加密等. 对于明文信息A,通过SHA1算法,生成一条160位长的识别码B.且明文 ...

  4. 【Unity3D】使用MD5值,确保本地Sqlite数据库内容没有被篡改

    Sqlite的应用场景 在判断是否使用存储格式为Sqlite模式的标准,我们的标准是内容只读.也就是说,除非发布者修改Sqlite内容,玩家只有读取的权限. 换个角度说,Sqlite里面的数据都是游戏 ...

  5. 基于Quick-cocos2d-x的资源更新方案 二

    写在前面 又是12点半了,对于一个程序员来说,这是一个黄金时间,精力旺盛,我想,是最适合整理和分享一些思路的时候了. 自从上次写了 基于Quick-cocos2d-x的资源更新方案 同样可见quick ...

  6. ClickOnce部署(5):自定义安全权限

    今天我们来探讨一下在ClickOnce部署中如何严格控制应用程序的权限. 演示应用 为了在下文中能更好地演示,我们先要做一个测试项目.也为了显得简单易懂,我使用最常用且最常见的WinForm项目,这是 ...

  7. 4、C#进阶:MD5加密、进程、线程、GDI+、XML、委托

    MD5加密 将字符串进行加密,无法解密.网上的解密方式也都是在库里找,找不到也没有. 1 protected void Page_Load(object sender, EventArgs e) 2 ...

  8. MD5算法的原理与实现

    ***********************************************声明************************************************ 原创 ...

  9. Hash(MD5校验工具)

    本站提供md5校验工具下载.Hash(md5校验工具)是一款小巧好用的哈希计算器,Hash支持文件拖放,速度很快,可以计算文件的MD5.SHA1.CRC32 的值.在论坛上.软件发布时经常用Hash ...

随机推荐

  1. python里有意思的文件查找glob模块

    python标准库之glob介绍 glob 文件名模式匹配,不用遍历整个目录判断每个文件是不是符合. 1.通配符 星号(*)匹配零个或多个字符 import glob for name in glob ...

  2. java的MethodHandle类详解

    一.总述   java7为间接调用方法提供了MethodHandle类,即方法句柄.可以将其看作是反射的另一种方式. 这是使用MethodHandle调用方法的一个例子: public class T ...

  3. 【Alpha】任务分解与分配

    Alpha阶段总体任务规划 Alpha阶段我们的任务主要是恢复原先项目的代码运行,并增加一部分物理实验(二)的内容以及完善之前项目未完成的功能,例如后台管理及用户管理界面.在恢复项目部分的主要工作是将 ...

  4. Smarty <= 3.1.32 Remote Code execution(CVE-2017-1000480)

    Smarty介绍   smarty是一个php模板引擎,其项目地址:https://github.com/smarty-php/smarty 测试环境搭建   下载:https://github.co ...

  5. Docker实战:更轻松、更愉快、更高效

    编者按:借助Docker,我们可以更容易地进行web应用部署,而同时不必头疼于项目依赖.环境变量以及各种配置问题,Docker可以快捷.高效地处理好这一切.而这也是本教程所要实现的主要目的.以下是作者 ...

  6. InnoDB索引概述,二分查找法,平衡二叉树

    索引是应用程序设计和开发的一个重要方面.如果索引太多,应用的性能可能会受到影响:如果索引太少,对查询性能又会产生影响.要找到一个合适的平衡点,这对应用的性能至关重要. 如果知道数据的使用,从一开始就应 ...

  7. WPF简单MVVM实现

    1. MVVM介绍: MVVM就是: Model -- 模型(现实中对象的抽象) View -- UI(用户界面) ViewModel -- UI界面的抽象(给View提供数据,并响应View的操作) ...

  8. WPF中用后台C#代码为TabItem设置Background属性

    TabItem tabItem = sender as TabItem; tabItem.Background = new ImageBrush(new BitmapImage(new Uri(@&q ...

  9. ORA-04091: table xxx is mutating, trigger/function may not see it

    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as tbcs SQL> SQL ...

  10. 去掉img标签周围的空白

    我们在页面布局的时候,明明已经去掉了所有标签的margin和padding,img标签周围依然会有空白,解决方法有以下几种: 1.给img标签设浮动: img{ float:left; } 2.将im ...