一:基本概念
明文:待加密信息
密文:经过加密后的明文
加密:明文转换为密文的过程
加密算法:明文转换为密文的转换算法
加密密钥:通过加密算法进行加密操作用的密钥
解密:将密文转为明文的过程
解密算法:密文转换为明文的算法
解密密钥:通过解密算法进行解密操作用的密钥
密码分析:截获密文者视图通过分析截获的密文从而推断出原来的明文或密钥的过程
主动攻击:攻击者非法入侵密码系统,采用伪造,修改,,删除等手段向系统注入假消息进行欺骗
被动攻击:对一个保密系统采取截获密文并对其进行分析和攻击(对密文没有破坏作用)
密码体制:由明文空间,密文空间,密钥空间,加密算法和解密算法五部分组成
二:密码分类
1):按照时间分类
古典密码:以字符为基本加密单元
现代密码:以信息块为基本加密单元
2):按照密码体制来分
名称 | 别名 | 详细说明 |
对称密码 | 单钥密码或私钥密码 | 指加密密钥和解密密钥一样 |
非对称密码 | 双钥密码或公钥密码 | 指加密密钥和解密密钥不一样,密钥分为公钥和私钥 |
对称密码算法 | 单钥密码算法或私钥密码算法 | 指应用于对称密码的加密,解密算法 |
非对称密码算法 | 双药密码算法或公钥密码算法 | 指应用于非对称密码的加密,解密算法 |
3):按照明文处理的方法来分
分组密码:值加密的时候将明文分成固定的长度的组,用同一密钥和算法对每一块进行加密,输出的也是固定长度的密文,多用于网络加密
流密码:也称序列密码,指加密时每加密一位或者一个字节明文
三:散列函数
1):散列函数用于验证数据的完整性
2):特点:长度不受限制,哈希值容易计算,散列运算过程不可逆
3):相关算法:
消息摘要算法MD5,SHA--安全散列算法
四:数字签名
主要针对以数字的形式存储的消息进行的处理
五:实现Base64算法
1):定义
基于64个字符的编码算法
2):算法实现
-jdk
-Comoons Codec
-Bouncy Castle
3)代码实现
import org.apache.commons.codec.binary.Base64; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.io.IOException; /** * Base64加密算法 */ public class Base64Util { private static String src="使用Base64加密算法"; //使用jdk public static void jdkBase64() throws IOException{ //加密 System.out.println("====使用jdk====="); BASE64Encoder encoder=new BASE64Encoder(); String encodeSrc=encoder.encode(src.getBytes()); System.out.println("加密后的密文为:"+encodeSrc); //解密 BASE64Decoder decoder=new BASE64Decoder(); String decoderSrc=new String(decoder.decodeBuffer(encodeSrc)); System.out.println("解密后的明文为:"+decoderSrc); } //使用Comoons Codec public static void ComoonsCodecBase64(){ System.out.println("===使用Commons codec==="); //加密 byte[] encodeSrc= Base64.encodeBase64(src.getBytes()); System.out.println("加密后的密文:"+new String(encodeSrc)); //解密 byte[] decodeSrc= Base64.decodeBase64(encodeSrc); System.out.println("解密后的明文:"+new String(decodeSrc)); } //使用Bouncy castle public static void BouncyCastleBase64(){ System.out.println("===使用Bouncy Castle==="); //加密 byte[] encodeSrc= org.bouncycastle.util.encoders.Base64.encode(src.getBytes()); System.out.println("加密后的密文:"+new String(encodeSrc)); //解密 byte[] decodeSrc= org.bouncycastle.util.encoders.Base64.decode(new String(encodeSrc)); System.out.println("解密后的密文:"+new String(decodeSrc)); } public static void main(String[] args){ try { jdkBase64(); ComoonsCodecBase64(); BouncyCastleBase64(); }catch (IOException e){ e.printStackTrace(); } } }
六:Base64算法的应用场景
e-mail,密钥,证书文件