首页 文章 精选 留言 我的

精选列表

搜索[认证考试],共10000篇文章
优秀的个人博客,低调大师

腾讯为自发开源类唯一获认证企业

9月17日,中国信通院可信开源评估结果在2021 OSCAR开源产业大会上正式发布,腾讯成为唯一通过可信开源治理能力评估的自发开源类企业。 会上,由腾讯云研发的开源项目TencentOS和TKEStack 荣获2021年OSCAR尖峰开源项目奖项,腾讯云虚拟化资深研发专家李万鹏则凭借在KVM开源社区的突出贡献,当选OSCAR尖峰开源人物。这意味着腾讯云在开源方面的贡献再度获得国家级的认可。 此前在2019年开源产业大会上,腾讯就曾独揽5项大奖。腾讯开源项目TarsCloud入选2020年度OSCAR尖峰开源项目,腾讯开源联盟主席、TARS基金会董事主席单致豪,也成功当选2020年度OSCAR尖峰开源人物。 腾讯云架构平台部系统研发总监郭振宇受邀在开幕式演讲,分享了腾讯操作系统TencentOS的开源发展之路。TencentOS Server诞生于2010 年,经历了长期的内部业务使用检验,其内核于2020年开源,目前已获得近千个star,开发者数量超过1000名。2018年,腾讯云启动物联网操作系统 TencentOS Tiny的研发,并在2019年9月对外开源发布,目前已获得超过5300个star,被超过4000名开发者使用。2020年,TencentOS Tiny成为开放原子开源基金会首批捐赠项目之一,在基金会进行进一步孵化,与国内外开发者共同打造物联网领域的开源标杆。腾讯边缘计算操作系统TencentOS Edge 预计也将于近期对外开源。 TKEStack 是腾讯云开源的一款集强壮性和易用性于一身的云原生容器平台。早在2009年,腾讯云就开始在容器技术领域发力,随着用户需求日渐增强,开始面向公有云用户提供基于kubernetes的容器服务TKE。随后,腾讯云将相关经验和技术进行整合,形成了TKEStack这一容器私有云解决方案,并于2019腾讯Techo开发者大会上宣布开源,目前是开放原子开源基金会的首批孵化项目之一。 近年来,腾讯云依托于云原生、操作系统及虚拟化等领域的技术优势,积极贡献开源。腾讯云上的云原生、大数据和AI等产品,也集成和优化了诸多开源技术,并全面兼容开源API。此次获得OSCAR尖峰开源人物的李万鹏,就是腾讯云在KVM领域的主要贡献者之一,在Linux内核KVM子系统方面有长期及突出的贡献。KVM是云计算关键底层技术,在刚刚举办的全球虚拟化顶级技术峰会 KVM Forum 上, 2021年度全球企业 KVM 开源贡献榜发布,腾讯云连续第五年入围,是唯一取得这一成就的中国企业。 2021年,“开源”首次被列入“十四五”规划,《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》指出,要支持数字技术开源社区等创新联合体发展,完善开源知识产权和法律体系,鼓励企业开放软件源代码、硬件设计和应用服务。 积极发展开源技术体系已经成为行业共识。从内部的代码开放,到自主研发的技术开源,再到社区参与及代码贡献,腾讯云正坚定拥抱开源生态。目前,腾讯在Github上贡献130多个开源项目,累计star超过37万,是全球开源贡献最大的科技公司之一。

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

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

转载自:http://www.thinksaas.cn/group/topic/335449/ http://blog.csdn.net/u010571535/article/details/8992543# 一、Android证书的格式 Android签名中证书的格式采用X.509标准的版本三,不过省略了一些内容。 X.509证书格式如下图所示: 二、证书的格式示例 从Chrome浏览器中导出一个证书,打开之后的样子如下图所示: 说明:由上图可以看出,在证书中,开发者的公钥是显式存在的。 三、对CERT.RSA进行详细解析 重要说明:编写Java程序和编写Android应用App解析Apk的CERT.RSA文件,得到的结果是不一样的。按道理,都是解析的同一个文件,为什么结果不一样呢?经过我们分析,发现不一样的地方是开发者公钥,但是这是由于二者的显示格式不同导致的。App解析得到的文件时十六进制显示的,而Java解析得到的结果却是十进制显示的。我们利用Java的BigInteger编写程序,将十六进制转换为十进制,验证了我们的猜想。 明确了上面的问题之后,对CERT.RSA 文件进行详细解析,得到下图: 说明: (1)首先,我们的通常所说的证书的签名,是生成证书的时候CA对整个证书的所有域签名的得到的,而不是对某一部分签名得到的。整个签名就是上图中部分一的最下面的一段十六进制的内容; (2)编程中的获取到的内容实质上是就是上图中的部分二,这是一个证书的所有内容; (3)部分一种的公钥等信息就是从部分二中得来的,可以直接在部分二中找到。 (4)可以猜测,部分一中的其他信息也是从部分二中得来,只不过编码方式不一样,所以显示不同而已。 ----------------------------------------------------------------------------------------------------------- 可以通过:openssl pkcs7 -inform DER -in CERT.RSA -noout -print_certs -text 将 CERT.RSA证书中的内容答应出来。 Certificate: Data: Version: 3 (0x2) Serial Number: 1005375368 (0x3beccf88) Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, O=Android, CN=Android Debug Validity Not Before: Dec 29 10:10:49 2014 GMT Not After : Dec 21 10:10:49 2044 GMT Subject: C=US, O=Android, CN=Android Debug Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:d8:b9:a8:66:5f:09:b0:04:86:3f:23:9e:c2:84: 93:a0:e3:dc:a2:5f:d3:ab:48:29:e9:e6:33:16:69: 56:87:4f:34:41:ce:be:3e:d0:a4:fa:33:27:e7:79: 7d:d3:0b:63:22:d3:27:f9:7b:f2:23:30:23:13:39: 24:4c:92:f2:15:60:35:ed:91:87:77:86:e7:f0:df: 2d:93:fd:59:26:86:93:4e:e5:13:e2:bf:55:5a:6a: e7:3d:ac:48:50:10:d4:96:71:2d:c7:f9:df:91:0b: b8:b0:0f:8d:b9:f2:8f:ec:65:33:c6:6c:a9:79:b1: da:74:d1:0f:cc:7a:c3:ed:d1:a2:85:42:86:ae:88: 2a:dd:3c:8b:b0:d5:e5:45:07:42:a0:96:65:b4:ac: 2f:98:7e:8a:36:2f:b8:0d:a7:1c:0f:38:f1:56:9c: 13:f6:3c:a0:2c:f7:a9:e8:cb:17:95:44:4f:dc:e2: ce:b7:9e:a3:f8:c2:fa:71:c0:f0:20:76:29:34:34: d9:e0:18:12:f9:ec:40:a9:2a:f1:39:cd:30:43:da: de:92:71:92:88:fd:28:0a:17:b7:cd:c8:d8:fb:45: ca:1c:61:bc:13:91:2e:01:b2:20:36:1b:18:b8:aa: e0:95:e0:ab:98:fa:9c:1b:6b:7f:bd:27:66:ab:5e: d0:9b Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: A5:02:31:28:2E:76:1B:10:11:68:AD:32:5C:8F:DC:00:30:80:BB:7C Signature Algorithm: sha256WithRSAEncryption ba:0d:dc:9a:f9:12:97:12:b0:7c:d6:07:e7:bd:27:32:46:60: 75:4b:e3:b4:3e:09:f7:90:53:cd:4d:f5:bf:61:3f:2a:2e:2f: d0:c8:50:c2:3b:29:62:10:25:7d:6b:53:48:88:e1:76:60:33: 52:45:ac:df:5f:49:95:ee:ac:75:81:14:46:2f:e0:26:30:be: d8:5d:2b:1c:a2:2f:30:34:c9:f4:9c:e4:c4:86:54:71:69:3d: de:2d:97:fe:dc:68:9f:13:d0:b9:86:e8:24:b9:75:04:cf:db: 1d:cf:d0:36:db:06:b9:87:37:3c:89:25:02:12:8b:fc:42:9e: 5e:18:69:25:5f:2a:52:ab:5a:a1:19:f6:3f:3b:9c:d3:5d:bd: ce:0b:5d:a0:f9:d6:0b:de:05:ff:89:24:b3:ad:9b:4e:5c:9f: 07:c2:b2:d9:55:44:49:e7:b7:cf:a2:ca:68:ae:64:0d:8a:56: 43:9b:de:ad:e5:d6:d5:86:76:ba:34:d4:90:e8:0a:ba:26:73: 8c:4b:7d:8c:92:02:bb:62:2c:9b:83:e8:d3:2f:74:01:72:89: b4:a2:08:12:c3:64:90:40:b2:8e:60:fd:db:6b:08:a7:db:32: 98:f7:7a:ce:c9:78:46:42:7d:09:31:6a:5f:b8:81:87:2f:62: 1e:e2:d3:7d Java 这是最简单的 import sun.security.pkcs.PKCS7; import java.io.FileInputStream; import java.io.IOException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; public class Test { public static void main(String[] args) throws CertificateException, IOException { FileInputStream fis = new FileInputStream("/Users/wangchen/Desktop/CERT.RSA"); PKCS7 pkcs7 = new PKCS7(fis); X509Certificate publicKey = pkcs7.getCertificates()[0]; System.out.println("issuer1:" + publicKey.getIssuerDN()); System.out.println("subject2:" + publicKey.getSubjectDN()); System.out.println(publicKey.getPublicKey()); } } 使用openssl-dev 的C API #include <openssl/bio.h> #include <openssl/x509.h> #include <openssl/pkcs7.h> #include <string> #include <iostream> using namespace std; string to_string(X509_NAME* name) { BIO* mem = BIO_new(BIO_s_mem()); if (mem == NULL) return NULL; if (X509_NAME_print_ex(mem, name, 0, XN_FLAG_RFC2253) < 0) return NULL; string str; char buf[128]; while((BIO_gets(mem, &buf[0], sizeof(buf))) > 0) { str.append(buf); } BIO_free(mem); return str; } int main() { FILE* fp; if (!(fp = fopen("CERT.RSA", "rb"))) { fprintf(stderr, "Error reading input pkcs7 file\n" ); exit(1); } /* todo: 这里可能有内存漏洞,有空查一下文档 */ PKCS7* pkcs7 = d2i_PKCS7_fp(fp, NULL); X509* cert = sk_X509_pop(pkcs7->d.sign->cert); string subject = to_string(X509_get_subject_name(cert)); string issuer = to_string(X509_get_issuer_name(cert)); char *modulus = BN_bn2dec(X509_get_pubkey(cert)->pkey.rsa->n); cout << subject << endl; OPENSSL_free(modulus); fclose(fp); return 0; } 分类: Android Pro 本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/4482667.html如需转载请自行联系原作者 demoblog

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

一场3000人在线考试差点集体交白卷:答题自动保存、交卷幂等与弱网重试的可靠性设计

上个月我们支撑了一场 3000 人同时在线的职业资格模拟考,考前压测一切正常,正式开考第 40 分钟却差点出大事:交卷接口 RT 从 200ms 飙到 8 秒,一批考生点了交卷一直转圈,有人情急之下刷新页面,发现最后十几分钟的答案没存上。那天我们是一边在群里安抚监考老师,一边热修兜底逻辑扛过来的。事后复盘,问题不在某一行代码,而在我们一开始把"答题保存"想简单了——以为就是个定时调接口。这篇把整条可靠性链路拆开讲:自动保存怎么设计、交卷怎么做幂等、弱网下怎么重试才不丢不重,以及五个当时踩得生疼的坑。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

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部分的功能。

用户登录
用户注册