编码实践当中涉及的密码学知识

OpenSSL 是用于安全传输层TLS,Transport Layer Security)协议和安全套接字层SSL,Secure Sockets Layer)协议的的工具包,提供了 SSL 协议实现(SSLv2SSLv3TLSv1)、大量算法实现(对称/非对称/摘要)、大数运算、非对称算法密钥、ASN.1 编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL 编解码、OCSP 协议、数字证书验证、PKCS7 标准实现和 PKCS12 个人数字证书格式实现等功能。

然而一直以来 OpenSSL 代码质量,总是受到开发人员的各种诟病,因而出现了 WolfSSL 与 PolorSSL 等 OpenSSL 的开源替代产品,其中 PolarSSL 被 ARM 公司收购之后,现更名为 Mbed TLS,主要由 Trusted Firmware 组织进行维护,遵循相关的 ARM 规范,并为 Armv8-AArmv9-AArmv8-M 内核架构提供了安全可信的参考实现。本文主要主要讨论了 Base64Hash 编码、以及 OpenSSL 所涉及的相关加解密知识。

阅读更多

常用数据结构 & 算法分析

数据结构自 1968 年以来被设置为一门独立课程,是关于结构化编程(以模块功能和处理过程为主的编程范式)的一门方法学,主要研究的是数据的逻辑结构物理结构以及它们之间的相互关系,并定义与这些结构相适应的算法。这里的算法描述的是一种确定并且有效的,适合用于计算机程序来实现和解决问题的方法。某种意义上,数据结构和算法是计算机科学与技术领域研究和应用的核心。

编写程应用序解决问题,首先需要从实际问题域当中抽象出一个模型,然后设计出求解该模型的算法。模型抽象的过程,实质是分析问题并从中找出操作对象,然后寻找出这些操作对象之间的关系,最终用程序语言加以描述的过程。本文采用 Linux C 语言进行描述,主要讲解了线性表队列共 5 种主要的数据结构,以及查找排序这 2 种常用算法。

阅读更多

面向对象设计模式温故知新

设计模式(Design Pattern)代表了面向对象程序设计的最佳实践,是一套软件工程化背景下,用于提高代码可复用性的解决方案。设计模式这一术语起源于 1995 年《设计模式 - 可复用面向对象软件的基础》一书的出版,该书 4 位作者被称为四人帮 GoFGang of Four,全书一共收录了常用的 23 种模式,该书的出版是软件工程领域的一座里程碑,标志着 Java C++ 等面向对象的程序设计语言,迈向了更加具有标准范式的工程化方向。

面向对象的编程思想,通过封装继承多态降低代码的耦合度,而设计模式在此基础上强调了代码的可复用性。本文代码采用 C++ 语言进行描述,然后搭配 UML 示意图进行描述。

阅读更多