孙广东  2014.6.24

数据经网络传输后会变得非常不安全,最简单有效的解决方案是给数据加一个密钥,使用MD5 算法算出校验码,服务器收到数据和校验码后在进行比较校验码是否正确,以此来判断数据是否修改过。 PHP生成 的 MD5 校验默认为32位的字符串,  而C#默认的是16位的字节数组,需要略加修改,转为32个字节的字符串,代码如下:

参考地址为:  http://wiki.unity3d.com/index.php?title=MD5

        public static string Md5Sum(string strToEncrypt){// 将需要加密的字符串转为byte数组byte[] bs = UTF8Encoding.UTF8.GetBytes(strToEncrypt);// 创建md5 对象System.Security.Cryptography.MD5 md5;md5 = System.Security.Cryptography.MD5CryptoServiceProvider.Create();// 生成16位的二进制校验码byte[] hashBytes = md5.ComputeHash(bs);// 转为32位字符串string hashString = "";for (int i = 0; i < hashBytes.Length; i++){hashString += System.Convert.ToString(hashBytes[i], 16).PadLeft(2, '0');}return hashString.PadLeft(32, '0');}

使用这个 MD5 函数非常简单, 在下面的代码示例中,数据是包含有 “hello world” 的一个字符串, 密钥位123, 使用Md5Sum算出32位的校验码字符串。

            string data = "hello world";string key = "123";Md5Sum(data + key);  // 返回

服务器端:

如上文所指出,上述的unity代码将返回匹配那个从 PHP 的 md5() 函数返回的哈希值。如果在服务器端使用的另一种语言,这里有一些例子:

Perl

<perl>use Digest::MD5 qw(md5_hex);

my $hashString = md5_hex($stringToHash); </perl>

PHP

< perl > $hashString = md5($stringToHash);< / perl >

Python

<python>import hashlib

def md5Sum(inputString):

  return hashlib.md5(inputString).hexdigest()

< / python >

红宝石

require 'digest/md5'

def md5Sum(inputString)

   Digest::MD5.hexdigest(inputString)

end

Shell

你必须安装在服务器上的 md5sum 程序。 <bash>HASH = `echo "$STRING_TO_HASH" | md5sum | cut -f 1 -d' '` </bash>

在来看看在Unity中的其他应用:

为库存系统生成 md5 的哈希值。使用哈希值我有几个重要原因。

1) 库存系统被链接到 PlayerPrefs。我需要一个非整数的方式来表示这个item 。

2) 我想要使用某种形式的哈希值来表示该item ,因为事实证明很难有人通过修改 PlayerPrefs作弊。

3) PlayerPrefs 键也是 md5 的哈希值,使得阅读 PlayerPrefs 文件是不可能。

using UnityEditor;
using UnityEngine;using System.Security.Cryptography;
using System.Text;public class ItemGUID : EditorWindow
{// Add menu item named "My Window" to the Window menu[MenuItem("UnityExtensions/Generate ItemGUID")]public static void ShowWindow(){MD5 md5Hash = MD5.Create();BaseItem[] items = FindSceneObjectsOfType(typeof(BaseItem)) as BaseItem[];foreach (BaseItem item in items){byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(item.name));StringBuilder sBuilder = new StringBuilder();for (int i = 0; i < data.Length; i++){sBuilder.Append(data[i].ToString("x2"));}item.guid = sBuilder.ToString();}}
}

对我而言,我有许多游戏对象,表示我的游戏中的Items 。每个游戏对象都有 BaseItem 组件,其中包含items 统计的一些实用函数。

它有一个public 字符串 guid、 变量,每次我运行此编辑器脚本设置他。在创建新items时,我重新运行该脚本,将所有的 guid 变量重置为其名称的 md5 哈希值。

非常简单和快速,和最重要的是超级有效。




UnityC# MD5验证相关推荐

  1. 一个简单的在线md5验证工具的实现

    因为要开始找工作了,因此更新博客的时间变长了.这学期学校开了门c#.NET的课程,基于.NET技术的强大,我也决定开始自学用ASP.NET来开发网站(以前曾用ASP开发过). 今天遇到要在数据库中存储 ...

  2. MD5验证文件是否重复

    根据文件生成MD5标识串,当两个标识串一致时认为文件内容相同. 文件生成MD5 String方法如下: import java.io.File; import java.io.FileInputStr ...

  3. MD5验证文件完整性 C++

    读取文件内容并且做MD5验证 C++ 为了验证下载的文件是否完整,是否被篡改,常用的验证方法为MD5验证,文件生成32位验证码,可验证文件是否完整下载或被篡改. md5.h文件 #ifndef MD5 ...

  4. JavaScript使用md5验证登录加密

    直接上代码 1.HTML部分 <!DOCTYPE html> <html lang="en"> <head><meta charset=& ...

  5. CAS 4.0.0RC 配置MD5验证功能

    配置内容同一样,只是增加一些配置. 因为cas已经默认就支持MD5加密验证,所以只是修改一下配置就可以了. <bean id="primaryAuthenticationHandler ...

  6. MD5验证工具:md5sum

    linux 下 shell命令 ,制作md5码 也用于软件的md5校验 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5 全称是报文摘要算法(Message-Digest Alg ...

  7. java md5验证工具_Java MD5校验工具类

    之前使用到了NIO的FileChannel做文件快速阅读,后来发现存在一个巨大的BUG,使用它会一直不释放文件句柄,即生成MD5的文件不能操作(移动或删除等),这个BUG网上吵得沸沸扬扬,至今没有解决 ...

  8. Excel VBA之MD5验证密码介绍

    MD5是一种不可逆的验证文件完整性的Message--Digest 算法,由MIT的实验室最早提出来,想了解历史的可以自行查阅,对于MD5不可逆的主要原因是Hash算法不可逆,其具体操作里的算法有求余 ...

  9. php支付宝接口md5签名,支付宝接口url生成,MD5验证

    URL生成: $parameter = array( 'service'           => 'create_forex_trade', 'partner'           => ...

  10. Intellij IDEA里的md5验证

        在网页登录界面里,常常需要输入用户的账户和密码,这个密码会在加盐之后,再取MD5,然后,与数据库里的MD5进行比较,若相同说明密码是正确的,若不同说明密码错误.     下面介绍,在Intel ...

最新文章

  1. QIIME 2用户文档. 18使用q2-vsearch聚类OTUs(2018.11)
  2. php单例模式的核心语句,PHP单例模式的核心思想
  3. 人脑计划:大脑研究如何对超级计算提出新要求
  4. C# 操作http协议学习总结
  5. java代码怎样连接es,Elasticsearch 连接ES的两种方式
  6. 《球球大作战》游戏优化之路(下)
  7. 安卓rpg绅士游戏资源_海贼无双3(动作游戏)——电脑安卓单机游戏下载资源分享...
  8. intellij中编译报错: The packaging for this project did not assign a file to the build artifact
  9. 利用octave求矩阵的转置
  10. 计算机电影院管理系统开题报告,开题报告电影院网上订票系统.doc
  11. python爬虫——使用selenium爬取qq群的成员信息(全自动实现自动登陆)
  12. live2d碰撞_Unity Live2D 模型(与UI)拖拽功能 实现源码
  13. 小米笔记本android开发,小米笔记本将预装自主研发的MIOS系统!
  14. 一文速学-最小二乘法曲线拟合算法详解+项目代码
  15. 腾讯数据库TcaplusDB X 黎明觉醒,热血不散,探索不止!
  16. 基于ChatGPT制作的一款英语口语练习应用SpokenAi
  17. Flutter 关于flutter打包ipa
  18. 冥土追魂(暴力枚举)
  19. 美国依靠美元霸权, 是如何收割世界财富的?
  20. 抖音直播带货变现,带货脚本文案怎么制作?丨国仁网络资讯

热门文章

  1. 设置计算机从目标磁盘启动,电脑开机怎么设置从U盘启动
  2. 浅析WLAN——无线局域网
  3. CSB专享实例部署操作手册
  4. 为什么要参加hadoop培训
  5. 周鸿祎谈产品:像怀胎一样怀产品,要厚着脸皮听批评
  6. 服务器的显示器无信号怎么解决办法,显示器无信号怎么办?显示器无信号解决办法大全...
  7. 故事板(StoryBoards)和动画(Animations)
  8. noi acm topcoder
  9. Python3,4行代码给图片加美颜,拍照再也不需要开美颜滤镜了。
  10. 设置Notes暗黑模式