证书工作流程
证书工作流程先了解一些相关的概念
公私秘钥:加密数据,生成会话密钥;
签名算法:生成摘要,防篡改,Hash之后私钥加密,验证方需要公钥解密,然后解密的内容Hash一下,验证两次摘要是否一致;
证书:数字身份证,验证身份有效性,通过CA签发链一级级验证,验证过程是从下至上,根证书存于系统;
在证书链校验过程中,客户端使用上一级证书的公钥来验证下一级证书的签名。这一过程通过一系列步骤来确保证书的真实性和有效性。具体步骤如下:
提取签名:客户端从要验证的证书中提取出数字签名本身。这个签名是由上一级CA的私钥生成的。
提取证书信息:客户端接着提取证书中的所有其他信息,即被签名的内容,这通常包括证书的版本、序列号、签发者、有效期、主题、主题公钥信息、扩展等。这些信息组合起来构成证书的“tbsCertificate”(To Be Signed Certificate)部分。
计算哈希值:客户端使用与证书签名相同的哈希算法(如SHA-256)对“tbsCertificate”部分的内容计算哈希值。
使用公钥解密签名:客户端使用上一级CA证书中的公钥对证书中的数字签名进行解密。解密的 ...
iOS项目framework拆分问题记录
1. Framework和LibraryXcode项目除了编译App应用程序,还可以编译Framework和Library,这是包含可重用代码的项目,可以被其他应用程序或项目引用。在iOS平台下,Framework和Library都是用来封装和分发代码的方式,但在功能和结构上有一些区别。
Library(静态库和动态库):
静态库(.a):在编译时,静态库会被完全复制到执行文件(如应用程序)中,增加了执行文件的大小。静态库与执行文件是一体的,不需要单独分发。
动态库(.dylib):在运行时被动态链接,可以被多个执行文件共享,节省了存储空间。但是,动态库需要与执行文件一起分发,且需要注意版本兼容性问题。
Framework:
Framework是MacOS和iOS特有的,是一种封装库、头文件和资源(如图片、本地化字符串、Storyboard等)的方式。
Framework可以是静态的或动态的。动态Framework(.framework)可以被多个应用程序共享,但每个应用程序的静态Framework都有自己的副本。
Framework的结构使得头文件、库和资源的管理更加方便,也更 ...
Struct的一个面试题
Swift相对Objective-C,突出了Struct的使用,可以用来声明复杂类型。虽然不能继承但是可以配合protocol和 extension 使用。一般面试者能答出值类型,但是可能是实践经验少的原因在下面的代码纠错翻车。
12345678910111213141516171819202122struct ItemA { var isSelect: Bool var valueA: Int var itemBList: [ItemB]?}struct ItemB { var isSelect: Bool var valueB: Int}extension ItemA { func updateItemAState() { let targetSelectState = !self.isSelect self.isSelect = targetSelectState if let _itemBList = itemBList { ...