微端热更新

热更新一般需要包含以下东西:

1.URL1:游戏版本配置文件地址

2.URL2:所有资源的MD5配置文件地址

问题

如果将热更新分为强更和弱更(静默更新),以上的更新策略将会不支持静默更新。

新策略

在下载资源到缓冲区后添加一步是否同步文件。如果直接同步文件则为强更,如果不直接同步文件则为静默更新。在下一次进入游戏的时候判断是否有文件未同步–先同步再检查热更新。

++++++++++++++============================================================+++++++++++++++++++

MD5值

Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。

MD5的md5典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在Unix下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:

MD5 (tanajiya.tar.gz) = 38b8c2c1093dd0fec383a9d9ac940515

这就是tanajiya.tar.gz文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。为了让读者朋友对MD5的应用有个直观的认识,笔者以一个比方和一个实例来简要描述一下其工作过程:

大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为司法机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的md5"数字指纹",如果任何人对文件做了任何改动,其MD5值也就是对应的"数字指纹"都会发生变化。

 // MD5加密
    public static string Encrypt(string txt)
    {
        // Create a new instance of the MD5CryptoServiceProvider object.
        MD5 md5Hasher = MD5.Create();

        // Convert the input string to a byte array and compute the hash.
        byte[] data = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(txt));

        // Create a new Stringbuilder to collect the bytes
        // and create a string.
        StringBuilder sBuilder = new StringBuilder();

        // Loop through each byte of the hashed data
        // and format each one as a hexadecimal string.
        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }

        // Return the hexadecimal string.
        return sBuilder.ToString();
    }

    /**
     * 解密
     *
     * @param txt
     * @return
     */
    public static string Decrypt (byte[] bs, string key) {
        byte[] keys = Encoding.UTF8.GetBytes (key); // 密钥转换成字节数组
        int iRandom = bs [bs.Length - 1] & 0xff;
        byte KRandom = bs [iRandom];
        byte[] rb = new byte[bs.Length - 2];
        // 异或
        for (int i = 0; i < rb.Length; i++) {
            if (i < iRandom) {
                bs [i] = (byte)(bs [i] ^ KRandom);
                rb [i] = (byte)(bs [i] ^ keys [i % keys.Length]);
            } else {
                bs [i + 1] = (byte)(bs [i + 1] ^ KRandom);
                rb [i] = (byte)(bs [i + 1] ^ keys [i % keys.Length]);
            }
        }
        // byte数组还原成字符串
        return Encoding.UTF8.GetString (rb);
    }

原文地址:https://www.cnblogs.com/cyct/p/10868144.html

时间: 2024-10-23 16:37:20

微端热更新的相关文章

微端 打包更新工具 as air 分享

分享 微端,更新的是散包,不像端游,一个大包搞定! 更新需要每次用工具把资源的散文件,根据目录结构及时间 生成一个列表, 每次更新就是 目录及时间的比对! 该工程可以翻译成 其他语言,有兴趣的同学,可以尝试! 下载地址: http://download.csdn.net/detail/stonechang/7572325 微端 打包更新工具 as air 分享

移动端热更新方案(iOS+Android)

PPT资源包含iOS+Android 各种方案分析:https://github.com/qiyer/Share/blob/master/%E7%83%AD%E6%9B%B4%E6%96%B0%E5%88%86%E4%BA%ABPPT.pptx 一 .热更新(热修复)产品背景 这里谈到的热更新都是指APP(不包含网页).APP按大类别可以粗略分为 应用 和 游戏.APP的开发周期是极其快速的,在实际开发流程中,我们总会有一些需求迫使我们短时间内快速上线,比如需求流程出错,程序员主观导致的一些bu

Unity客户端架构设计与网络游戏关键技术(Avatar,热更新,Protobuf)

·  课程讲师:海洋 ·  课程分类:游戏开发 ·  适合人群:中级 ·  课时数量:20(42节)课时 ·  更新程度:完毕 ·  服务类型:C类(普通服务类课程) ·  用到技术:Unity客户端,UI设计框架,Avatar换装,Protobuf-net等 ·  涉及项目:搭建Unity客户端 UI设计框架以及Avatar换装和移动端热更新技术实现以及Protobuf-net在Unity中运用 对这个课程有兴趣的可以加我qq2748165793 1.课程研发环境 开发工具:Unity4.6和

unity 热更新思路和实现

声明:本文介绍的热更新方案是我在网上搜索到的,然后自己修改了一下,相当于是借鉴了别人的思路,加工成了自己的,在此感谢无私分享经验的朋友们. 想要使用热更新技术,需要规划设计好资源比较策略,资源版本,确保增加新资源后可以下载到本地,有资源更新的时候可以替换掉本地旧资源.我在前面写了一篇"unity 打包AssetBundle"的文章,里面生成了一个资源版本文件,不多解释了,上图.至于怎么生成这个文件的,可以看一下我前面写的文章. 废话不多说. 先介绍热更新步骤,后上代码 步骤一.在Res

Webpack热更新原理

开发环境页面热更新早已是主流,常见的需求如赛事网页推送比赛结果.网页实时展示投票或点赞数据.在线评论或弹幕.在线聊天室等,都需要借助热更新功能,才能达到实时的端对端的极致体验. webpack-hot-middleware webpack-hot-middleware中间件是webpack的一个plugin,通常结合webpack-dev-middleware一起使用.借助它可以实现浏览器的无刷新更新(热更新),即webpack里的HMR(Hot Module Replacement).如何配置

RN学习1——前奏,app插件化和热更新的探索

react_native_banner-min.png React Native(以下简称RN)有大量前端开发者的追捧.前端开发是一个活跃的社区,一直尝试着一统前后端,做一个全栈开发,RN就是他们在客户端领域的尝试. 说是从零开始,但其实我还是懂一点点JS代码的,而且算是一个有经验的iOS.Android开发,对很多js和native交互的细节和特性还算了解,在QDaily里面也做过好多hybird的尝试,还经常用JSPatch做hotfix,总的来说,就是对hot update.插件化以及hy

【.net 深呼吸】程序集的热更新

当一个程序集被加载使用的时候,出于数据的完整性和安全性考虑,程序集文件(在99.9998%的情况下是.dll文件)会被锁定,如果此时你想更新程序集(实际上是替换dll文件),是不可以操作的,这时你得把应用程序退出,替换文件后再启动程序. 多数情况下这样做是可行的,只是有时候,比如ASP.NET或一些需要一直运行的服务进程,重启程序来更新好像不太好. 要是想对程序集进行热更新,即在程序运行的同时替换文件,有一个大家很熟悉的方案——影像复制,如果你不熟悉.net,你肯定没听说过的.当然了,这个叫法也

热更新和热修复 个人小结

热修复和热更新 1 热更新和热修复:在线修复程序的 BUG 2 JSPach 的使用原理: OC 是一门动态运行时的语言,方法的运行和对象的创建是在运行时中创建的.JSPatch 正的用运行时,通过JavaScriptCore.framework作为 JS引擎,从 JS 动态调用方法和对象到OC 中,再作用NSInvocation动态调用对应的方法.例 Class class = NSClassFromString(@"UIViewController"); id controller

微端 代码工程 as air 分享

分享 ^_^ 1. 用到 air , as , 2. 微端下载及更新技术 成功上线的棋牌游戏,可以用于传统游戏开发! 地址: http://download.csdn.net/detail/stonechang/7560085 微端 代码工程 as air 分享,布布扣,bubuko.com