现在项目中加密与解密的方式很多,很早就想整理一下Java中加密与解密的方式,读完<<Java加密与解密的艺术>>一书.借此机会梳理一下这方面的知识点

一.基础普及

  安全技术目标

  安全技术目标主要包含以下五个方面:

    1,保密性(Confidentiality)

      保密性也被称作机密性.保密性确保数据仅能被合法的用户访问,即数据不能被未授权的第三方使用

    2.完整性(Integruty)

      完整性主要确保数据只能由授权方或以授权的方式进行修改,即数据在传输过程中不能被未授权方修改

    3.可用性(Availability)

      可用性主要确保所有数据仅在适当的时候可以由授权方访问

    4.可靠性(Reliability)

      可靠性主要确保雄能在规定条件下,规定时间内,完成规定的功能时具有稳定的概率

    5.抗否认性(Non-Repudiation)

      抗否认性也称作抗抵赖性,主要确保发送方与接收方在执行各自操作后,对所做的操作不可否认

  除此之外,计算机网络信息系统的其他安全技术还包括:

  可控性,可审查性,认证,访问控制等

  OSI七层模型:OSI参考模型是由国际化标准组织制定的  开放式通信系统 互联网参考模型(Open System Interconnection Reference Model)

  物理层-数据链路层-网咯层-传输层-会话层-表示层-应用层

  TCP/IP四层协议

  网络接口层-网络层-传输层-应用层

  

  霍克霍夫原则:

    公开算法而不公开密钥

二.常用的加密算法的说明

  1.BASE64-电子邮件传输算法

    注意:Base64算法主要用于解决电子邮件传输问题,早期的邮件传输只支持ASCII码字符,如果非ASCII码字符传输可能就会出现乱码,这就是BASE64算法的由来

    BASE简介:

      BASE64是基于64个有效字符对数据进行编码,BASE64算法并不是一个加密算法,只能算是加密算法的一个分支

    URLBASE64算法的由来:

      为了能在http的get请求中传递2进制数据,因此有了URLBASE64算法,将+和/进行了替换,

  2.消息摘要算法-验证信息的完整性

    消息摘要算法又称为散列算法,其核心在于散列函数的单向性,即通过散列函数可以获得对应的散列值,但不可以通过该散列值反推出其原始信息,这是消息摘要算法的的安全性的根本所在

    消息摘要算法主要包含:MD(消息摘要算法),SHA(安全散列算法),HMAC(消息认证码算法)共三大系列,常用语验证数据的完整性,是数字签名的的核心算法

    MD算法:

      包含MD2 MD4 MD5

    SHA算法

      包含SHA1 SHA124 SHA256等等

      SHA 安全散列算法,被广泛认可为MD5算法的继承者

    MAC-消息认证码算法

      消息认证码算法是含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加入了密钥

  3.对称加密算法

    AES,DES RC

    对于大多数堆成加密算法而言,解密算法是加密算法的逆运算,加密密钥和解密密钥相同

    AES是DES算法的升级,解决了DES算法的低效(密钥较短,处理速度慢的问题)

    AES算法的优点:

      密钥建立时间段,灵敏性好,内存需求低

  4.非对称加密算法

    RSA.DSA

    非对称加密与对称加密算法的主要差别在于非对称加密算法用于加密和解密的密钥不相同,分为公钥和私钥,公钥和私钥成对存在

    非对称加密的优点:

      解决了对称加密算法密钥分配的问题,并极大提高了算法的安全性,常用于B2C或者B2B应用

    非对称加密的缺点:

      解密时间长,

  5.对称加密与非对称加密相结合:

    实现:

      使用对称加密算法为数据加密/解密,使用公钥和私钥为对称加密算法密钥加密/解密,使用对称加密算法的高校性,加上非对称加密算法的密钥管理,整体提高加密系统的安全性

  

  

Java加密与解密的艺术 读书心得的更多相关文章

  1. Java加密与解密笔记(一) Base64和数据摘要算法

    对加密解密下面的内容一定要先理解: 甲乙双方要通信,中间的连接可能被人窃听甚至篡改.解决办法就是把传输的内容进行加密,用密文去传输,这样即使被监听也没办法知道信息的具体内容. 加密时,甲乙双方可以约定 ...

  2. Java加密与解密笔记(三) 非对称加密

    非对称的特点是加密和解密时使用的是不同的钥匙.密钥分为公钥和私钥,用公钥加密的数据只能用私钥进行解密,反之亦然. 另外,密钥还可以用于数字签名.数字签名跟上文说的消息摘要是一个道理,通过一定方法对数据 ...

  3. Java加密与解密笔记(四) 高级应用

    术语列表: CA:证书颁发认证机构(Certificate Authority) PEM:隐私增强邮件(Privacy Enhanced Mail),是OpenSSL使用的一种密钥文件. PKI:公钥 ...

  4. Java加密与解密笔记(二) 对称加密

    前面的仅仅是做了编码或者摘要,下面看看真正的加密技术. DES public class DESUtil { static final String ALGORITHM = "DES&quo ...

  5. java 加密与解密艺术

    视频来自黑马程序员公开课 对称加密之后的密文可能存在乱码,这些乱码无法识别,信息经过加密后会变成一串毫无规律的二进制串,此时再选择一种编码方式来展示,通常是 BASE64 格式的编码. 为了解决这个问 ...

  6. java 加密与解密艺术二

    首先需要明确的是RSA的密钥对不能手动指定,需要通过代码系统生成 接下来我们来介绍下生成密钥对 package com.weiyuan.test; import java.security.KeyPa ...

  7. AES Java加密 C#解密 (128-ECB加密模式)

    在项目中遇到这么一个问题: java端需要把一些数据AES加密后传给C#端,找了好多资料,算是解决了,分享一下: import sun.misc.BASE64Decoder; import sun.m ...

  8. Java加密、解密Word文档

    对一些重要文档,我们为保证其文档内容不被泄露,常需要对文件进行加密,查看文件时,需要正确输入密码才能打开文件.下面介绍了一种比较简单的方法给Word文件添加密码保护以及如何给已加密的Word文件取消密 ...

  9. Java 加密、解密PDF文档

    本篇文章将介绍通过Java编程来设置PDF文档保护的方法.我们可以设置仅用于查阅文档的密码,即该通过该密码打开文档仅用于文档阅读,无法编辑:也可以设置文档编辑权限的密码,即通过该密码打开文档时,文档为 ...

随机推荐

  1. python3 使用 django-xadmin 遇到的许多坑

    几乎所有公司项目都是python2的, xadmin对Python2 很友好,对Python3 很不友好, 所以在Python3 环境下使用xadmin遇到了许多意想不到的坑,在这里记录并分享一下: ...

  2. luogu4061 大吉大利,晚上吃鸡!

    链接 最短路径\(dag\),一道好题. 题目大意:求一张图中满足下列要求的点对\((i,j)\)数量: 所有最短路径必定会经过 \(i\) 点和 \(j\) 点中的任意一点. 不存在一条最短路同时经 ...

  3. html+css+javascript学习记录1

    <p> 最近在学一部分前端,知识点很多,却没怎么系统地应用过,因而理解可能不够深吧.所以我想做点片段似的东西,不懂的再在网上搜一搜,这样可能会更有意思点,所以做了这个记录,希望自己坚持下去 ...

  4. web框架之初识Django

    目录 一.web框架 1.1什么是web框架 1.2自制的简易web框架 1.3三大主流web框架简介 Django Flask Tornado 1.4动态网页与静态网页 二.初识Django框架 2 ...

  5. Eclipse使用maven创建SSM-web项目

    1.环境准备 (1)maven:apache-maven-3.5.2,我的maven安装在D:\apache-maven-3.5.2,eclipse中maven配置如下: 先add ,添加好自己的ma ...

  6. Window10彻底卸载应用商店

    Window10如何彻底卸载应用商店?Window10应用商店就是一个应用下载平台,我们可以在应用商店中下载各种应用,但是很多用户并不喜欢在Window10应用商店中下载应用,觉得应用商店浪费内存,因 ...

  7. web页面上传大文件有没有好的解决方案

    本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...

  8. docker运行spring boot 包镜像出现no main manifest attribute问题

    问题: 在进行docker部署的时候,开始对项目进行打包,在启动该镜像时 [root@topcheer docker]# docker run -it 00494e3d4550no main mani ...

  9. mysql.connector.errors.ProgrammingError: 1698 (28000): Access denied for user 'root'@'localhost'

    排错,首先在sql编辑工具 通过测试连接,查看一下自己的密码是否正确 : 由此可见,是自己的密码错误,输入正确的密码后 在这里把密码修改为正确之后程序运行正常 #初始化数据库连接 engine = c ...

  10. 《图解设计模式》读书笔记2-2 Factory Method模式

    目录 类图 代码 角色介绍 思想 类图 代码 //产品类,任意可"use"的产品都可继承该类 public abstract class Product { public abst ...