Base64最早应用于解决电子邮件传输的问题。在早期,由于“历史问题”,电子邮件只允许ASCII码字符。如果要传输一封带有非ASCII码字符的电子邮件,当它通过有“历史问题”的网关时就可能出现问题(网关可能会对非ASCII码字符的二进制位作调整,即将非ASCII码的8位二进制码最高位置为0)。此时用户收到的邮件会是一封纯粹的乱码邮件,由于这个原因产生了base64算法。
按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.) 使用的字符包括大小写字母各26个,加上10个数字,和加号“+”,斜杠“/”,一共64个字符,等号“=”用来作为后缀用途。
密码学 (设置安全方式 加密方式、SSL等 修改邮件端口 最终是为了实现数据安全传输。)
密码常用术语: 明文、密文、加密、加密算法、加密密钥、解密、解密算法、解密秘钥。MD5是单向的不存在解密密码分析: 截获密文者试图通过分析截获的密文从而推断出原来的明文或者密钥的过程。主动攻击: 攻击者非法入侵密码系统,采用伪造、修改、删除等手段向系统注入假消息进行欺骗。(对密文具有破坏作用)被动攻击: 对保密系统采取截获密文并对其进行分析和攻击。(对密文没有破坏作用)密码体制:由明文空间、密文空间、密钥空间、加密算法、和解密算法5部分组成。密码协议:也称安全协议,指以密码学为基础的消息交换的通信协议,目的是在网络环境中提供安全服务。密码系统:指用于加密、解密的系统。柯克霍夫原则:数据的安全基于密钥而不是算法的保密。即系统的安全起决于密钥,对密钥保密,对算法公开——现代密码学设计的基本原则。加解密基础 密码分类 按照时间分:古典密码(以字符为基本单位) 现代密码(以信息块为基本加密单元)保密内容算法分: 受限算法—算法保密性基于保持算法的秘密—军事领域—类型 基于密钥算法—算法的保密性基于对密钥的保密—现在密码密码体制: 密码/算法说明对称密码单钥密码或私钥密码,指加密密钥和解密密钥相同。非对称密码双密钥或公钥密码,指加密密钥与解密密钥不同,密钥分为公钥、私钥。对称密码算法单密码算法/私钥密码算法,指应用于对称密码的加密、解密算法。非对称密码算法双钥密码算法/公钥密码算法,指对应于非对称密码的加密、解密算法。密码分类明文处理方法分组密码指加密时将名为分成固定长度的组,用同一密钥和算法对每一块加密,输出也是固定长度的密文。多用于网络加密。流密码也称序列密码。指加密时每次加密一位或者一个字节明文。- 散列函数是为了验证数据的完整性,并不是用来加解密的 长度不受限制,运算过程不可逆,单向。 特点: - 1、长度不受限制; - 2、哈希值容易计算; - 3、散列运算过程不可逆(被称为单向函数的原因)。 - 相关算法: - 1、消息摘要算法MD5等; - 2、SHA:安全散列算法; - 3、MAC:消息认证码算法。 - 4、数字签名:主要针对以数字的形式存储的信息进行的处理,会产生一种带有带有操作者身份信息的代码
OSI参考模型 TCP/IP安全机制 - JCA、JCE、JSSE、JAAS - JCA- Java Cryptography Architecture(提供基本加密、消息摘要算法) - JCE-Java Cryptography Extension(DES、AES、RSA算法通过JCE拓展提供) - JSSE-Java Secure socket Extension(JSSE提供基于SSL的加密功能,主要用于网络传输) - JAAS-Java Authentication and Authentication Service (提供基于java开发的系统是认证、权限) - 相关jdk类 - java.security-消息摘要 - javax.crypto-安全消息摘要,消息认证(鉴别)码 - java.net.ssl-安全套接字 - 第三方java扩展 - Bouncy Castle-两种支持方案配置、调用,CA认证 - Commons Codes、Apache、base64、二进制、十六进制、字符集编码 -Url编码/解码