更新时间:2023-08-25 10:37:46
封面
版权信息
内容简介
前言
源码下载与技术支持
第1章 密码学概述
1.1 玛丽女王的密码
1.2 密码学简史
1.3 密码学的基本概念
1.3.1 基本概念
1.3.2 密码学要解决的5大问题
1.3.3 密码学中的五元组
1.3.4 加解密算法的分类
第2章 搭建C和C++密码开发环境
2.1 密码编程的两个重要的国际库
2.2 C/C++密码库OpenSSL
2.2.1 OpenSSL源代码模块结构
2.2.2 OpenSSL加密库调用方式
2.2.3 OpenSSL支持的对称加密算法
2.2.4 OpenSSL支持的非对称加密算法
2.2.5 OpenSSL支持的信息摘要算法
2.2.6 OpenSSL密钥和证书管理
2.2.7 面向对象与OpenSSL
2.2.8 BIO接口
2.2.9 EVP接口
2.2.10 关于版本和操作系统
2.2.11 在Windows下编译OpenSSL 1.1.1
2.2.12 在Windows下编译OpenSSL 1.0.2m
2.2.13 在Linux下编译安装OpenSSL 1.0.2
2.2.14 测试使用openssl命令
2.3 纯C++密码开发Crypto++库
2.3.1 Crypto++的编译
2.3.2 使用Cypto++进行AES加解密
2.4 国产密码开发库GmSSL
2.4.1 GmSSL的特点
2.4.2 GmSSL的一些历史
2.4.3 什么是国密算法
2.4.4 GmSSL的下载
2.4.5 在Windows下编译安装GmSSL
2.4.6 在Linux下编译安装GmSSL
2.4.7 默认编译安装GmSSL
2.4.8 在老版本的Linux下编译安装GmSSL
第3章 对称密码算法
3.1 基本概念
3.2 对称加解密算法的分类
3.3 流加密算法
3.3.1 基本概念
3.3.2 流密码和分组密码的比较
3.3.3 RC4算法
3.4 分组加密算法
3.4.1 工作模式
3.4.2 短块加密
3.4.3 DES和3DES算法
3.4.4 SM4算法
3.5 利用OpenSSL进行对称加解密
3.5.1 基本概念
3.5.2 对称加解密相关函数
第4章 杂凑函数和HMAC
4.1 杂凑函数概述
4.1.1 什么是杂凑函数
4.1.2 密码学和杂凑函数
4.1.3 杂凑函数的发展
4.1.4 杂凑函数的设计
4.1.5 杂凑函数的分类
4.1.6 杂凑函数的碰撞
4.2 SM3杂凑算法
4.2.1 常量和函数
4.2.2 填充
4.2.3 迭代压缩
4.2.4 杂凑值
4.2.5 一段式SM3算法的实现
4.2.6 三段式SM3杂凑的实现
4.2.7 OpenSSL实现SM3算法
4.3 HMAC
4.3.1 什么是HMAC
4.3.2 产生背景
4.3.3 设计目标
4.3.4 算法描述
4.3.5 独立自主实现HMAC-SM3
4.4 SHA系列杂凑算法
4.4.1 SHA算法概述
4.4.2 SHA的发展史
4.4.3 SHA系列算法的核心思想和特点
4.4.4 单向性
4.4.5 主要用途
4.4.6 SHA256算法原理解析
4.4.7 SHA384和SHA512算法
4.5 更通用的基于OpenSSL的哈希运算
4.5.1 获取摘要算法函数EVP_get_digestbyname
4.5.2 创建结构体并初始化函数EVP_MD_CTX_create
4.5.3 销毁摘要上下文结构体EVP_MD_CTX_destroy
4.5.4 摘要初始化函数EVP_DigestInit_ex
4.5.5 摘要更新函数EVP_DigestUpdate
4.5.6 摘要结束函数EVP_Digest_Final_ex
4.5.7 单包摘要计算函数EVP_Digest
第5章 密码学中常见的编码格式
5.1 Base64编码
5.1.1 Base64编码的由来
5.1.2 Base64的索引表
5.1.3 Base64的转化原理