Base64算法
来源:互联网 发布:手机自动开启移动数据 编辑:程序博客网 时间:2024/06/05 19:22
1、算法由来
Base64最早应用于解决电子邮件传输的问题。在早期,由于“历史问题”,电子邮件只允许ASCII码字符。如果要传输一封带有非ASCII码字符的电子邮件,当它通过有“历史问题”的网关时就可能出现问题(网关可能会对非ASCII码字符的二进制位作调整,即将非ASCII码的8位二进制码最高位置为0)。此时用户收到的邮件会是一封纯粹的乱码邮件,由于这个原因产生了base64算法。
2、定义
按照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个字符,等号“=”用来作为后缀用途。
3、密码学简述
密码学
(设置安全方式 加密方式、SSL等 修改邮件端口 最终是为了实现数据安全传输。)- 密码常用术语:
明文、密文、加密、加密算法、加密密钥、解密、解密算法、解密秘钥。MD5是单向的不存在解密 - 密码分析:
截获密文者试图通过分析截获的密文从而推断出原来的明文或者密钥的过程。 - 主动攻击:
攻击者非法入侵密码系统,采用伪造、修改、删除等手段向系统注入假消息进行欺骗。(对密文具有破坏作用) - 被动攻击:
对保密系统采取截获密文并对其进行分析和攻击。(对密文没有破坏作用) - 密码体制:由明文空间、密文空间、密钥空间、加密算法、和解密算法5部分组成。
- 密码协议:也称安全协议,指以密码学为基础的消息交换的通信协议,目的是在网络环境中提供安全服务。
- 密码系统:指用于加密、解密的系统。
- 柯克霍夫原则:数据的安全基于密钥而不是算法的保密。即系统的安全起决于密钥,对密钥保密,对算法公开——现代密码学设计的基本原则。
- 密码常用术语:
- 加解密基础
- 密码分类
按照时间分:古典密码(以字符为基本单位)
现代密码(以信息块为基本加密单元) - 保密内容算法分:
受限算法—算法保密性基于保持算法的秘密—军事领域—类型
基于密钥算法—算法的保密性基于对密钥的保密—现在密码
- 密码分类
- 密码体制:
- 散列函数是为了验证数据的完整性,并不是用来加解密的 长度不受限制,运算过程不可逆,单向。
特点:
- 1、长度不受限制;
- 2、哈希值容易计算;
- 3、散列运算过程不可逆(被称为单向函数的原因)。
- 相关算法:
- 1、消息摘要算法MD5等;
- 2、SHA:安全散列算法;
- 3、MAC:消息认证码算法。
- 4、数字签名:主要针对以数字的形式存储的信息进行的处理,会产生一种带有带有操作者身份信息的代码
4、java安全组成
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编码/解码
5、应用
- E-mail邮件传输
- 网络数据传输
- 密钥存储、数字证书存储
- Base64算法
- base64算法
- base64算法
- Base64算法
- Base64算法
- Base64算法
- BASE64算法
- Base64算法
- Base64算法
- Base64算法
- Base64算法
- base64算法实现
- Base64编码算法
- Base64编码delphi算法!
- Base64算法原理
- Base64算法原理
- Base64编码算法
- Base64编码算法
- libc
- php关于session应注意的事项
- 页面jsp编码utf-8,传递中文参数到java后台出现乱码
- HBase StoreFile(HFile)
- 一图理解行式数据库和列式数据库的区别
- Base64算法
- 闲聊架构、框架以及架构师
- SpringMVC框架入门使用
- Android adb 连接不上设备
- 下载Xcode 版本的 连接
- JS 判断字符串是否为时间格式&开始时间不能大于截止时间
- [Leetcode] Convert a Number to Hexadecimal
- OpenGL纹理映射总结
- Java面试题大全(Java基础一)