风也温柔

计算机科学知识库

java常用加密解密算法 Java密码类型_Java 加密解密基础分类及模式归纳整理

  Java 加密解密基础:

  密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律java常用加密解密算法 Java密码类型_Java 加密解密基础分类及模式归纳整理,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学java常用加密解密算法,总称密码学。

  密码学常用术语

  明文: 待加密数据。

  密文: 明文经过加密后数据。

  加密: 将明文转换为密文的过程。

  加密算法: 将明文转换为密文的转换算法。

  加密密钥: 通过加密算法进行加密操作的密钥。

  解密: 将密文转换为铭文的过程。

  解密算法: 将密文转换为明文的转换算法。

  解密密钥: 通过解密短发进行解密操作的密钥。

  密码学分类

  1.按时间分

  a.古典密码:以字符为基本加密单元。

  b.现代密码:以信息块为基本加密单元。

  2按保密内容的算法划分

  a.受限制算法:算法的保密性基于保持算法的秘密。

  b.基于密钥算法:算法的保密性基于对密钥的保密。

  3.按密钥体制划分

  a.对称密码体制:也叫单钥或私钥密码体制,加密过程与解密过程使用同一套密钥。对应的算法就是对称加密算法,例如DES,AES。

  b.非对称密码体制:也叫双钥或公钥密码体制,加密过程与解密过程使用不同的密钥。对应的算法就是非对称加密算法,例如RSA。

  4.按明文处理方式划分

  a.流密码:也称为序列密码,加密时每次加密一位或者一个字节的明文。例如RC4算法。

  b.分组密码:加密时将明文分成固定长度的组,用同一个密钥和算法对每一组进行加密输出也是固定长度的明文。当最后一组大小不满足指定的分组大小时,

  有两种处理模式:

  无填充模式,直接对剩余数据进行加密,此组加密后大小与剩余数据有关;

  有填充模式,对于不满足指定长度分组的进行数据填充;如果恰巧最后一组数据与指定分组大小相同,那么直接添加一个指定

  大小的分组;填充的最后一个字节记录了填充的字节数。

  分组密码工作模式简介

  1.电子密码本模--ECB

  将明文的各个分组独立的使用相同的密钥进行加密,这种方式加密时各分组的加密独立进行互不干涉,因而可并行进行。同样因为各分组独立加密的缘故java常用加密解密算法,相同的明文分组加密之后具有相同的密文。该模式容易暴露明文分组的统计规律和结构特征。不能防范替换攻击。

  其实照实现来看,ECB的过程只是把明文进行分组,然后分别加密,最后串在一起的过程。当消息长度超过一个分组时,不建议使用该模式。在每个分组中增加随机位(如128位分组中96位为有效明文,32位的随机数)则可稍微提高其安全性,但这样无疑造成了加密过程中数据的扩张。

  优点:

  1.简单;

  2.有利于并行计算;

  3.误差不会被传送;

  缺点:

  1.不能隐藏明文的模式;

  2.可能对明文进行主动攻击;

  2.密码分组链接模--CBC

  需要一个初始化向量IV,第一组明文与初始化向量进行异或运算后再加密,以后的每组明文都与前一组的密文进行异或运算后再加密。IV 不需要保密,它可以明文形式与密文一起传送。

  优点:

  1.不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。

  缺点:

  1.不利于并行计算;

  2.误差传递;

  3.需要初始化向量IV

  文章来源:https://blog.csdn.net/weixin_34129222/article/details/114742792