密码学原理与Java实现

密码学原理与Java实现

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

本书重点介绍了Java自带加解密函数的相关技术,以及密码学领域重要的开源库OpenSSL在Java开发中的应用。

内容简介

现在,Java开发可谓如日中天,并且Java安全开发是Java开发领域中的一个重要内容,每个Java开发人员都必须掌握。

本书共8章,主要内容包括密码学和Java概述、搭建Java密码开发环境、对称密码算法原理、利用JCA\JCE对称加解密、杂凑函数和HMAC、密码学中常见的编码格式、非对称算法RSA的加解密、数字签名技术等。

本书内容非常详细,学习坡度非常平滑,循序渐进,就算没有密码学基础,也能从零开始到全面掌握。

本书面向的读者是Java开发人员、企业内转行计算机信息安全的工作人员、已有信息安全基础并想了解Java加解密新特性的人员。本书也可作为高等院校和培训机构计算机及相关专业师生的教学参考书。

作者简介

作者朱文伟,名校计算机专业统招硕士,20年C\C、Java开发经验。主导开发过密码、图形、人工智能等产品。精通Linux、Windows系统开发及数据库开发技术。著有图书《Windows C/C加密解密实战》《密码学原理与Java实现》《Linux C与C一线开发实践》《Visual C2017从入门到精通》。

章节目录

版权信息

内容简介

前言

第1章 加解密和Java概述

1.1 密码学基础知识

1.1.1 密码学概述

1.1.2 对称密钥加密技术

1.1.3 公开密钥加密技术

1.1.4 单向散列函数算法

1.1.5 数字签名基础知识

1.2 身份认证基础知识

1.2.1 身份认证概述

1.2.2 身份认证的方式

1.3 Java语言概述

1.3.1 Java简介

1.3.2 Java主要特性

1.3.3 Java的发展史

第2章 搭建Java密码开发环境

2.1 搭建Java开发环境

2.1.1 下载JDK

2.1.2 安装JDK

2.1.3 配置JDK环境变量

2.1.4 在命令行下编译Java程序

2.1.5 在Eclipse中开发Java程序

2.1.6 下载Eclipse

2.1.7 启动Eclipse

2.1.8 第一个Eclipse下的Java工程

2.1.9 在工作区中打开工程

2.2 搭建Java Web开发环境

2.2.1 下载Tomcat

2.2.2 安装Tomcat

2.2.3 在Eclipse中配置Tomcat

2.2.4 第一个Eclipse下的JSP工程

2.2.5 第一个JavaBean工程

2.3 使用JNI

2.4 Java密码开发的两个主流国际库

2.5 准备密码库OpenSSL

2.5.1 OpenSSL源代码模块结构

2.5.2 OpenSSL加密库调用方式

2.5.3 OpenSSL支持的对称加密算法

2.5.4 OpenSSL支持的非对称加密算法

2.5.5 OpenSSL支持的信息摘要算法

2.5.6 OpenSSL密钥和证书管理

2.5.7 面向对象与OpenSSL

2.5.8 BIO接口

2.5.9 EVP接口

2.5.10 关于版本和操作系统

2.5.11 在Windows下编译OpenSSL1.1.1

2.5.12 在Windows下编译OpenSSL1.0.2m

2.5.13 测试使用OpenSSL命令

2.6 在Java下使用OpenSSL

2.6.1 以命令方式使用OpenSSL

2.6.2 以函数库方式调用OpenSSL

2.7 纯Java密码开发库

2.7.1 JCA的基本概念

2.7.2 JCA的设计原则

2.7.3 JCA中的密码服务提供者

2.7.4 JCA编程的两大安全包

2.7.5 包java.security中的接口和类

2.7.6 包javax.crypto中的接口和类

2.7.7 第一个JCA例子

第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算法

第4章 利用JCA/JCE对称加解密

4.1 包java.security

4.1.1 密钥接口

4.1.2 安全随机数

4.2 包javax.crypto

4.2.1 安全密钥接口SecretKey

4.2.2 密钥生成类KeyGenerator

4.2.3 密钥规范类SecretKeySpec

4.2.4 初始向量类IvParameterSpec

4.2.5 加解密类Cipher

4.2.6 利用JCA实现DES加密

第5章 杂凑函数和HMAC

5.1 杂凑函数概述

5.1.1 什么是杂凑函数

5.1.2 密码学和杂凑函数概述

5.1.3 杂凑函数的发展

5.1.4 杂凑函数的设计

5.1.5 杂凑函数的分类

5.1.6 杂凑函数的碰撞

5.2 SM3杂凑算法

5.2.1 SM3算法概述

5.2.2 SM3算法的特点

5.2.3 常量和函数

5.2.4 填充

5.2.5 迭代压缩

5.2.6 杂凑值

5.2.7 一段式SM3算法的实现

5.2.8 三段式SM3杂凑的实现

5.2.9 Java和OpenSSL1.1.1b联合实现SM3算法

5.3 MD5消息摘要算法

5.3.1 MD5算法概述

5.3.2 MD5算法的特点

5.3.3 MD5是否属于加密算法

5.3.4 MD5用途

5.3.5 MD5算法原理

5.3.6 手工实现MD5算法

5.3.7 基于Java消息摘要类实现MD5算法

5.4 HMAC

5.4.1 什么是HMAC

5.4.2 HMAC产生的背景

5.4.3 HMAC在身份认证中的应用

5.4.4 设计目标

5.4.5 算法描述

5.4.6 手工实现HMAC-MD5

5.4.7 基于Java Mac类实现HMAC-MD5

5.4.8 实现HMAC-SM3

5.5 更通用的基于OpensSSL的哈希运算

5.6 SHA系列杂凑算法

5.6.1 SHA算法概述

5.6.2 SHA系列算法核心思想和特点

5.6.3 SHA256算法原理解析

5.6.4 SHA256算法核心思想

5.6.5 SHA256算法的实现

第6章 密码学中常见的编码格式

6.1 Base64编码

6.1.1 概述

6.1.2 Base64编码的由来

6.1.3 Base64的索引表

6.1.4 Base64的转化原理

6.1.5 使用OpenSSL的base64命令

6.1.6 Java编程实现Base64编解码

6.2 PEM文件

6.2.1 什么是PEM文件

6.2.2 生成一个PEM文件

6.3 ASN.1及其编解码

6.3.1 ASN.1的基本概念

6.3.2 ASN.1的编码格式

6.3.3 ASN的优点

6.3.4 基本语法规则

6.3.5 ASN.1数据类型

6.3.6 ASN.1实例

第7章 非对称算法RSA的加解密

7.1 非对称密码体制概述

7.2 RSA概述

7.3 RSA的数学基础

7.3.1 素数

7.3.2 素性检测

7.3.3 倍数

7.3.4 约数

7.3.5 互质数

7.3.6 质因数

7.3.7 强素数

7.3.8 因子

7.3.9 模运算

7.3.10 模运算的操作与性质

7.3.11 单向函数

7.3.12 费马定理和欧拉定理

7.3.13 幂与模幂运算

7.3.14 同余符号≡

7.3.15 欧拉函数

7.3.16 最大公约数

7.3.17 欧几里得算法

7.3.18 扩展欧几里得算法

7.4 RSA算法描述

7.5 RSA算法实例

7.5.1 查找法计算d

7.5.2 简便法计算私钥d

7.5.3 扩展欧几里得计算私钥d

7.5.4 加密字母

7.5.5 分组加密字符串

7.6 RSA加密长度限制问题

7.7 熟悉PKCS#1

7.7.1 PKCS#1填充

7.7.2 PKCS#1中的 RSA私钥语法

7.8 在OpenSSL命令中使用RSA

7.8.1 生成RSA公私钥

7.8.2 提取私钥参数

7.8.3 利用RSA公钥加密一个文件

7.8.4 利用私钥解密一个文件

7.9 基于OpenSSL库的Java RSA实现

7.9.1 OpenSSL的RSA实现

7.9.2 主要数据结构

7.9.3 主要函数

7.10 随机大素数的生成

7.11 Java中的大数表示

7.12 基于大素数的RSA算法Java实现

7.13 基于JCA的RSA算法实现

7.13.1 密钥对类KeyPair

7.13.2 密钥对生成类KeyPairGenerator

7.13.3 密钥工厂类KeyFactory

7.14 RSA算法的攻击及分析

7.14.1 因子分解攻击

7.14.2 选择密文攻击

7.14.3 公共模数攻击

7.14.4 小指数攻击

第8章 数字签名技术

8.1 概述

8.2 什么是数字签名技术

8.2.1 签名

8.2.2 数字签名基本概念

8.2.3 数字签名的原理

8.2.4 数字签名的一般性定义

8.2.5 数字签名的分类

8.2.6 数字签名的安全性

8.2.7 数字签名的特征与应用

8.3 RSA公钥算法在数字签名中的应用

8.4 利用OpenSSL命令进行签名验签

密码学原理与Java实现是2021年由清华大学出版社出版,作者李建英。

得书感谢您对《密码学原理与Java实现》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
Vue.js设计与实现 电子书
1.Vue.js官方团队成员霍春阳倾力打造;2.基于Vue.js3深入解析Vue.js设计细节;3.Vue.js作者尤雨溪作序推荐;4.本书提供源代码下载;5.业界大咖联袂推荐...
Flink原理与实践 电子书
本书围绕大数据流处理领域,介绍FlinkDataStreamAPI、时间和窗口、状态和检查点、TableAPI&SQL等知识。书中以实践为导向,使用大量真实业务场景案例来演示如何基于Flink进行流处理。
SpringSecurity原理与实战 电子书
本书主要介绍基于Spring Security构建系统安全性的技术体系和工程实践。
Java面向对象思想与程序设计 电子书
本书面向以Java为第一种程序语言的初学者,强化面向对象的原理和机制,强调“做中学”,每章开头用思维导图的方式,引导读者带着问题去学习该章的内容,以便牢固地掌握知识。另外,作者录制了知识点和案例的讲解视频,读者可以方便地通过扫码的方式查看,同时,计蒜客在线教育团队,为读者提供了伴随式的在线编程平台支持,读者可以将图书和线上编程结合起来学习。
Java程序设计教程与上机实验 电子书
本书是在编者多年从事Java教学和项目开发的基础上编写而成的,以面向对象的编程思想为指导,通过大量的项目案例,详细讲述了Java程序设计的基本方法和技巧。全书共11章,第1章主要讲解Java的基础知识;第2章主要介绍Java语言的程序基础,包括Java中的常量和变量、运算符、语句、数组和方法。第3~4章主要介绍面向对象的程序设计,包括继承、封装和多态。第5~11章主要介绍Java语言中的一些高级应