资源详情

密码学原理与Java实现

密码学原理与Java实现-电子书下载


作者: 朱文伟/李建英
出版社: 清华大学出版社
出版年: 2021-6-1
定价: 89
装帧: 平装
ISBN: 9787302580270

下载次数:1


本站推荐

书籍资料

  • 内容简介
  • 作者介绍
  • 书籍目录

现在,Java开发可谓如日中天,并且Java安全开发是Java开发领域中的一个重要内容,每个Java开发人员都必须掌握。市面中的绝大多数密码学书籍都是针对C或C++的,本书重点介绍Java自带加解密函数的相关技术,以及密码学领域重要的开源库OpenSSL在Java开发中的应用。
本书共8章,主要内容包括密码学和Java概述、搭建Java密码开发环境、对称密码算法原理、利用JCA\JCE对称加解密、杂凑函数和HMAC、密码学中常见的编码格式、非对称算法RSA的加解密、数字签名技术等。本书内容非常详细,学习坡度非常平滑,循序渐进,就算没有密码学基础,也能从零开始到全面掌握。
本书面向的读者是Java开发人员、企业内转行计算机信息安全的工作人员、已有信息安全基础并想了解Java加解密新特性的人员。本书也可作为高等院校和培训机构计算机及相关专业师生的教学参考书。

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

第1章加解密和Java概述1
1.1密码学基础知识1
1.1.1密码学概述1
1.1.2对称密钥加密技术2
1.1.3公开密钥加密技术2
1.1.4单向散列函数算法3
1.1.5数字签名基础知识3
1.2身份认证基础知识5
1.2.1身份认证概述5
1.2.2身份认证的方式5
1.3Java语言概述6
1.3.1Java简介6
1.3.2Java主要特性7
1.3.3Java的发展史8
第2章搭建Java密码开发环境10
2.1搭建Java开发环境10
2.1.1下载JDK10
2.1.2安装JDK11
2.1.3配置JDK环境变量12
2.1.4在命令行下编译Java程序13
2.1.5在Eclipse中开发Java程序14
2.1.6下载Eclipse14
2.1.7启动Eclipse14
2.1.8第一个Eclipse下的Java工程15
2.1.9在工作区中打开工程18
2.2搭

JavaWeb开发环境18
2.2.1下载Tomcat18
2.2.2安装Tomcat19
2.2.3在Eclipse中配置Tomcat20
2.2.4第一个Eclipse下的JSP工程21
2.2.5第一个JavaBean工程25
2.3使用JNI30
2.4Java密码开发的两个主流国际库35
2.5准备密码库OpenSSL36
2.5.1OpenSSL源代码模块结构36
2.5.2OpenSSL加密库调用方式37
2.5.3OpenSSL支持的对称加密算法38
2.5.4OpenSSL支持的非对称加密算法38
2.5.5OpenSSL支持的信息摘要算法38
2.5.6OpenSSL密钥和证书管理38
2.5.7面向对象与OpenSSL39
2.5.8BIO接口40
2.5.9EVP接口41
2.5.10关于版本和操作系统42
2.5.11在Windows下编译OpenSSL1.1.142
2.5.12在Windows下编译OpenSSL1.0.2m54
2.5.13测试使用OpenSSL命令62
2.6在Java下使用OpenSSL64
2.6.1以命令方式使用OpenSSL64
2.6.2以函数库方式调用OpenSSL67
2.7纯Java密码开发库72
2.7.1JCA的基本概念73
2.7.2JCA的设计原则74
2.7.3JCA中的密码服务提供者74
2.7.4JCA编程的两大安全包76
2.7.5包java.security中的接口和类77
2.7.6包javax.crypto中的接口和类83
2.7.7第一个JCA例子84
第3章对称密码算法原理89
3.1基本概念89
3.2对称加解密算法的分类90
3.3流加密算法90
3.3.1基本概念90
3.3.2流密码和分组密码的比较91
3.3.3RC4算法91
3.4分组加密算法95
3.4.1工作模式95
3.4.2短块加密99
3.4.3DES和3DES算法100
3.4.4SM4算法118
第4章利用JCA/JCE对称加解密139
4.1包java.security140
4.1.1密钥接口140
4.1.2安全随机数141
4.2包javax.crypto150
4.2.1安全密钥接口SecretKey151
4.2.2密钥生成类KeyGenerator151
4.2.3密钥规范类SecretKeySpec155
4.2.4初始向量类IvParameterSpec156
4.2.5加解密类Cipher157
4.2.6利用JCA实现DES加密160
第5章杂凑函数和HMAC181
5.1杂凑函数概述181
5.1.1什么是杂凑函数181
5.1.2密码学和杂凑函数概述182
5.1.3杂凑函数的发展182
5.1.4杂凑函数的设计183
5.1.5杂凑函数的分类183
5.1.6杂凑函数的碰撞183
5.2SM3杂凑算法184
5.2.1SM3算法概述184
5.2.2SM3算法的特点184
5.2.3常量和函数184
5.2.4填充185
5.2.5迭代压缩185
5.2.6杂凑值186
5.2.7一段式SM3算法的实现187
5.2.8三段式SM3杂凑的实现194
5.2.9Java和OpenSSL1.1.1b联合实现SM3算法198
5.3MD5消息摘要算法201
5.3.1MD5算法概述202
5.3.2MD5算法的特点202
5.3.3MD5是否属于加密算法202
5.3.4MD5用途202
5.3.5MD5算法原理203
5.3.6手工实现MD5算法204
5.3.7基于Java消息摘要类实现MD5算法211
5.4HMAC213
5.4.1什么是HMAC213
5.4.2HMAC产生的背景214
5.4.3HMAC在身份认证中的应用214
5.4.4设计目标215
5.4.5算法描述215
5.4.6手工实现HMAC-MD5216
5.4.7基于JavaMac类实现HMAC-MD5219
5.4.8实现HMAC-SM3222
5.5更通用的基于OpensSSL的哈希运算226
5.6SHA系列杂凑算法232
5.6.1SHA算法概述232
5.6.2SHA系列算法核心思想和特点233
5.6.3SHA256算法原理解析233
5.6.4SHA256算法核心思想235
5.6.5SHA256算法的实现240
第6章密码学中常见的编码格式249
6.1Base64编码249
6.1.1概述249
6.1.2Base64编码的由来249
6.1.3Base64的索引表249
6.1.4Base64的转化原理250
6.1.5使用OpenSSL的base64命令252
6.1.6Java编程实现Base64编解码253
6.2PEM文件258
6.2.1什么是PEM文件258
6.2.2生成一个PEM文件260
6.3ASN.1及其编解码261
6.3.1ASN.1的基本概念261
6.3.2ASN.1的编码格式262
6.3.3ASN的优点262
6.3.4基本语法规则263
6.3.5ASN.1数据类型263
6.3.6ASN.1实例266
第7章非对称算法RSA的加解密274
7.1非对称密码体制概述274
7.2RSA概述276
7.3RSA的数学基础276
7.3.1素数276
7.3.2素性检测276
7.3.3倍数277
7.3.4约数277
7.3.5互质数277
7.3.6质因数277
7.3.7强素数277
7.3.8因子278
7.3.9模运算278
7.3.10模运算的操作与性质279
7.3.11单向函数279
7.3.12费马定理和欧拉定理280
7.3.13幂与模幂运算280
7.3.14同余符号≡280
7.3.15欧拉函数281
7.3.16最大公约数281
7.3.17欧几里得算法282
7.3.18扩展欧几里得算法284
7.4RSA算法描述292
7.5RSA算法实例293
7.5.1查找法计算d293
7.5.2简便法计算私钥d295
7.5.3扩展欧几里得计算私钥d297
7.5.4加密字母298
7.5.5分组加密字符串298
7.6RSA加密长度限制问题302
7.7熟悉PKCS#1303
7.7.1PKCS#1填充304
7.7.2PKCS#1中的RSA私钥语法308
7.8在OpenSSL命令中使用RSA309
7.8.1生成RSA公私钥309
7.8.2提取私钥参数311
7.8.3利用RSA公钥加密一个文件312
7.8.4利用私钥解密一个文件313
7.9基于OpenSSL库的JavaRSA实现314
7.9.1OpenSSL的RSA实现314
7.9.2主要数据结构315
7.9.3主要函数316
7.10随机大素数的生成332
7.11Java中的大数表示333
7.12基于大素数的RSA算法Java实现334
7.13基于JCA的RSA算法实现339
7.13.1密钥对类KeyPair340
7.13.2密钥对生成类KeyPairGenerator340
7.13.3密钥工厂类KeyFactory342
7.14RSA算法的攻击及分析348
7.14.1因子分解攻击348
7.14.2选择密文攻击348
7.14.3公共模数攻击348
7.14.4小指数攻击349
第8章数字签名技术350
8.1概述350
8.2什么是数字签名技术351
8.2.1签名351
8.2.2数字签名基本概念352
8.2.3数字签名的原理352
8.2.4数字签名的一般性定义353
8.2.5数字签名的分类354
8.2.6数字签名的安全性355
8.2.7数字签名的特征与应用356
8.3RSA公钥算法在数字签名中的应用356
8.4利用OpenSSL命令进行签名验签357