Java实现Base64位加密
⼀密码常⽤术语
明⽂:待加密信息
密⽂:经过加密后的明⽂
加密:明⽂转为密⽂的过程
加密算法:明⽂转为密⽂的转换算法
加密秘钥:通过加密算法进⾏加密操作的秘钥
解密:将密⽂转为明⽂的过程
解密算法:密⽂转为明⽂的算法
解密秘钥:通过解密算法进⾏解密操作的秘钥
密码分析:截获密⽂者试图通过分析截获的密⽂从⽽推断出原来的明⽂或秘钥的过程
主动攻击:攻击者⾮法⼊侵密码系统,采⽤伪造,修改,删除等⼿段向系统注⼊假消息进⾏欺骗(对密⽂具有破坏作⽤)
被动攻击:对⼀个保密系统采取截获密⽂并对其进⾏分析和攻击(对密⽂没有破坏作⽤)
密码体制:由明⽂空间,密⽂空间,秘钥空间,加密算法和解密算法五部分组成
密码协议:也称为安全协议,指以密码学为基础的消息交换的通信协议,⽬的是在⽹络环境中提供安全的服务
柯克霍夫原则:数据的安全基于秘钥⽽不是算法的保密,即系统的安全取决于秘钥,对秘钥保密,对算法公开.___现代密码学设计的基本原则⼆密码分类
密码分类----时间
古典密码:以字符为基本加密单元
现代密码:以信息块为基本加密单元
密码分类----保密内容算法
名称详细说明应⽤领
域
类别
受限制算法算法的保密性基于保持算
法的秘密
军事领
域
古典密
码
基于秘钥算法算法的保密性基于对秘钥
的保密
现代密
码
密码分类----密码体制
名称别名详细说明
对称密码单钥密码或私钥密
码
指加密秘钥与解密秘钥相
同
⾮对称密码双钥密码或公钥密
码
加密秘钥与解密秘钥不同,
秘钥份公钥,私钥
对称密码算法单钥密码算法或私
钥密码算法
指应⽤于对称密码的加密,
解密算法
⾮对称密码算法双钥密码算法或公
钥密码算法
指对应于⾮对称密码的加
密,解密算法
密码分类----明⽂处理⽅法
分组密码:指加密时将明⽂分成固定长度的组,⽤同⼀秘钥和算法对每⼀块加密,输出也是固定从长度的密⽂,多⽤于⽹络加密
流密码:也称序列密码.指加密时每次加密⼀位或者⼀个字节明⽂
散列函数
散列函数⽤来验证数据的完整性
特点:
长度不受限制
哈希值容易计算
散列运算过程不可逆
散列函数相关的算法
消息摘要算法MD5等
SHA--安全散列算法
MAC--消息认证码算法
数字签名
主要是针对以数字的形式存储的消息进⾏的处理
三 OSI与TCP/IP安全体系
OSI安全体系
开放式通信系统(Open System Interconnection)
七层⽹络通信协议对应的安全机制有加密机制,数字签名机制,访问控制机制,数据完整性机制,认证机制,业务流填充机制,路由控制机制,公证机制.对应每⼀层会拥有不同的处理⽅式
安全服务
认证(鉴别):在整个⽹络的交互过程中,对于接收⽅和发送⽅的⾝份和数据来源的认证
访问控制服务:防⽌没有授权的⽤户⾮法访问资源
数据保密性服务:为了确保数据的安全有效,防⽌数据在传输过程中泄露和篡改
数据完整性服务:保证数据在传输过程中原样传输
抗否认性服务:防⽌发送和接收双⽅在执⾏各⾃操作的时候否认操作
TCP/IP安全体系
四实现Base64算法
算法实现
-JDKjava源代码加密
-Commons Codec
-Bouncy Castle
代码实现:三种实现⽅式
package st;
import java.util.Base64.Encoder;
import sun.misc.BASE64Decoder;
import java.io.IOException;
import java.util.Base64;
/**
* 三种⽅式实现Base64加密
*
* @author Administrator
*
*/
public class Base64Demo {
private static String src = "hello world";
public static void main(String[] args) {
/
/ jdkBase64();
// commonsCodesBase64();
bouncyCastleBase64();
}
public static void jdkBase64() {
Encoder encoder = Encoder();
byte[] encode = Bytes());
String encodeStr = new String(encode);
System.out.println(encodeStr);
BASE64Decoder decoder = new BASE64Decoder();
byte[] decodeBuffer = null;
try {
decodeBuffer = decoder.decodeBuffer(encodeStr);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String decodeStr = new String(decodeBuffer);
System.out.println(decodeStr);
}
public static void commonsCodesBase64() {
byte[] encodeBytes = dec.Bytes()); System.out.println("encode:" + new String(encodeBytes));
byte[] decodeBytes = dec.binary.Base64.decodeBase64(encodeBytes); System.out.println(new String(decodeBytes));
}
public static void bouncyCastleBase64() {
byte[] encode = org.Bytes());
System.out.println(new String(encode));
byte[] decode = org.ders.Base64.decode(encode);
System.out.println(new String(decode));
}
}
View Code
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论