首页 文章 精选 留言 我的

精选列表

搜索[动态代码分析],共10000篇文章
优秀的个人博客,低调大师

MSSQL · 架构分析 · 从SQL Server 2017发布看SQL Server架构的演变

摘要 美国时间2017年10月2日,微软正式发布了最新一代可以运行在Linux平台的数据库SQL Server 2017。SQL Server 2017给用户带来了一系列的新功能特性的同时,也体现了微软关于自家关系型数据库平台建设方面的最新设计与思考。这篇文章旨在介绍SQL Server 2017新特性,以及微软是如何从架构层面的演进来快速实现Linux平台的SQL Server 2017产品。 SQL Server 2017发布 早在2016年,当微软宣布SQL Server将很快在Linux上运行时,这一消息对用户、权威人士以及SQL Server从业者来说都是一个巨大的惊喜。果然,微软不负众望,在美国时间2017年10月2日,正式发布了最新一代可以运行在Linux平台的数据库SQL Server 2017。近年来随着各类NoSQL

优秀的个人博客,低调大师

[Android Pro] Android签名与认证详细分析之一(CERT.RSA剖析)

转载自:http://www.thinksaas.cn/group/topic/335450/ 一、Android签名概述 我们已经知道的是:Android对每一个Apk文件都会进行签名,在Apk文件安装时,系统会对其签名信息进行比对,判断程序的完整性,从而决定该Apk文件是否可以安装,在一定程度上达到安全的目的。 给定一个Apk文件,解压,可以看到一个META-INFO文件夹,在该文件夹下有三个文件:分别为MANIFEST.MF、CERT.SF和CERT.RSA。这三个文件分别表征以下含义: (1)MANIFEST.MF:这是摘要文件。程序遍历Apk包中的所有文件(entry),对非文件夹非签名文件的文件,逐个用SHA1生成摘要信息,再用Base64进行编码。如果你改变了apk包中的文件,那么在apk安装校验时,改变后的文件摘要信息与MANIFEST.MF的检验信息不同,于是程序就不能成功安装。 说明:如果攻击者修改了程序的内容,有重新生成了新的摘要,那么就可以通过验证,所以这是一个非常简单的验证。 (2)CERT.SF:这是对摘要的签名文件。对前一步生成的MANIFEST.MF,使用SHA1-RSA算法,用开发者的私钥进行签名。在安装时只能使用公钥才能解密它。解密之后,将它与未加密的摘要信息(即,MANIFEST.MF文件)进行对比,如果相符,则表明内容没有被异常修改。 说明:在这一步,即使开发者修改了程序内容,并生成了新的摘要文件,但是攻击者没有开发者的私钥,所以不能生成正确的签名文件(CERT.SF)。系统在对程序进行验证的时候,用开发者公钥对不正确的签名文件进行解密,得到的结果和摘要文件(MANIFEST.MF)对应不起来,所以不能通过检验,不能成功安装文件。 (3)CERT.RSA文件中保存了公钥、所采用的加密算法等信息。 说明:系统对签名文件进行解密,所需要的公钥就是从这个文件里取出来的。 结论:从上面的总结可以看出,META-INFO里面的说那个文件环环相扣,从而保证Android程序的安全性。(只是防止开发者的程序不被攻击者修改,如果开发者的公私钥对对攻击者得到或者开发者开发出攻击程序,Android系统都无法检测出来。) 参考文章:http://www.blogjava.net/zh-weir/archive/2011/07/19/354663.html 二、在Eclipse下配置App的签名信息 对App进行签名的方式一般有以下几种:通过Google提供的签名工具,通过某些开发者开发的签名工具或者通过Eclipse提供的签名方法,但一般而言,他们都是在下层调用Google提供的签名工具,所以签名的方法都相同。 例如,在Eclipse下面配置签名信息时,可以设置开发者信息: 具体参考文章:http://blog.csdn.net/zuolongsnail/article/details/6444197(上图来源于该文章) 说明:从上图可以看出,在Eclipse中,可以设置开发者的详细信息。在其他的签名工具中,可能会直接调用其他签名信息。 值得注意的是,在设置签名信息的时候,会有如下图所示的步骤: 请暂且记住这里有认证指纹信息:MD5和SHA1。由于这一步骤是在编译生成Apk文件之前进行的,所以,说明这里的MD5和SHA1与程序的内容毫无关系,只与开发者的公私钥对等开发信息有关。 我们自己设置签名信息之后开发程序并签名,得到的签名信息经过keytool.exe解析结果如下: 说明:由上图可以发现,解析结果中的MD5和SHA1与上面得到的MD5,SHA1是相同的。 三、同一个公司的不同App的签名有关系吗? 我们有一个疑问,许多互联网大公司会开发许多官方的移动应用,那么这些应用的签名信息是否相同呢,他们所用的公私钥对是否都是一样的?我们对Tencent公司的QQ,QQ空间,微信三款产品进行解析,得到下面的结果和结论。 1、使用keytool.exe 使用Java提供的keytool.exe工具对三款产品的签名情况(CERT.RSA文件)进行解析,情况如下所示。 微信: QQ: QQ空间: 说明:从上面的三幅图可以看出,虽然同为Tencent的三款产品,但是他们的所有者信息、签发人信息等都不尽相同,尽管他们都表示了腾讯公司或者Tencent等信息。因为这是开发者自己设置的,而且微信和QQ属于不同的事业部,办公地点不同,所以他们的签名信息不同也就不足为奇了。 2、自己写应用提取 自己写程序从CERT.RSA提取出公钥信息和证书中的签名信息(对开发者信息的签名,例如姓名,公司,国家等。。。),情况如下: 由于都是一些字符,且很多,所以只取开始和结束的几位比特做一说明: 微信: 公钥:c05f........5e9f 签名:3082....1949 QQ: 公钥:a15e........3695 签名:3082........2049 QQ空间: 公钥:82d...........445 签名:3082........1677 说明:由于三款App的开发者设置的签名信息几乎不同,使用的公私钥对都不同,所以这里取出来的公钥和签名信息几乎不同。唯一相同的是三款App的签名的开始一些比特,可能是因为有的信息相同,具体不得而知。 四、同一款App的不同版本签名信息有关系吗? 为了说明这个问题,我们对QQ的两个版本做了检测,情况如下: QQ4.7.0: 公钥:a15e........3695 签名:3082........2049 QQ4.6.2: 公钥:a15e........3695 签名:3082........2049 说明:QQ的两个不同版本,从CERT.RSA文件中取出的公钥和签名信息,完全相同。说明QQ开发团队始终使用的是一个相同的公私钥对。当然,他们对于不同的版本使用不同的公私钥对也是可以的,也是可能的。这种可能性发生在他们主动更改公私钥对的情况下,也可能发生在他们用不同的环境进行签名的情况下。 五、可以修改META-INFO文件夹下的文件吗? (1)CERT.RSA,CERT.SF的文件名可以修改。 我们把CERT.SF的文件名改成CERT1.SF,把CERT.RSA的文件名改成CERT1.RSA,原来的Apk文件可以被成功安装。 说明:Android系统在检测的时候,不会一定要找到CERT这种文件名,是按照文件类型来检测的。但是,如果.RSA文件与.SF文件的名字不同,那么就不能成功安装。 (2)添加自己的CERT.SF和CERT.RSA文件到META-INFO文件夹下面,不能成功。 说明:在(1)的基础上,我们执行(2)操作,不能成功安装,这是因为Android系统找不到摘要文件与(2)中添加上的两个文件进行对应。 六、不同的签名应用,得到的结果可能不同。 用Eclipse签名的Apk文件,解析CERT.RSA文件之后得到的结果如下: 用Dodo Apktools签名后的Apk文件解析之后结果如下: 说明:用Dodo签名的解析文件多了后面的扩展部分,但总体内容不变。 七、应用商店用什么方式检测官方版? 豌豆荚推出的洗白白功能很受欢迎,那么他们是如何辨别App的是否是官方出品的呢? 根据搜集到的资料,他们CEO说是这样实现的:将商店里的App与官网上的App签名做对比。 分类: Android Pro 本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/4482550.html如需转载请自行联系原作者 demoblog

优秀的个人博客,低调大师

音视图(泛内容)网站透视分析 DB设计 - 阿里云(RDS、HybridDB) for PostgreSQL最佳实践

标签 PostgreSQL , 用户透视 , 设备透视 , 圈人 , 标签 , 视频网站 , 优酷 , 土豆 , 喜马拉雅 背景 日常生活中,人们使用最多的除了社交类网站、购物网站,估计就是音频、视频、图文信息类内容网站了。 视频网站,已经渗透到各种终端,除了喜闻乐见的手机,还包括移动终端、电脑、盒子、电视、投影仪等。有设备属性、会员属性、渠道属性等。 内容运营是非常重要的环节,而透视则是运营的重要武器。 业务需求 1、生成设备、会员画像 ID、各个维度的标签、其中包括一些多值列标签(例如最近7天、一个月看过的导演、演员主演的片子,。。。。。。) 通常多值列的值可能是几十万的量(几十万演员,几十万片源,。。。)。通常一个设备、人有几十上百个属性列。通常一个设备单个多值列内可能有几十个VALUE。 2、画像透视 2.1、根据任意标签条件组合查询满足条件的

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册