java Base64加密

java Base64加密

密码常用术语 

明文:待加密信息
密文:经过加密后的明文
加密:明文转为密文的过程
加密算法:明文转为密文的转换算法
加密密钥:通过加密算法进行加密 操作用的密钥
解密:将密文转为明文的过程
解密算法:密文转为明文的算法
解密密钥:通过解密算法进行解密操作用的密钥
密码分析:截获密文者试图通过分析截获的密文从而推断出原来的明文或密钥的过程
主动攻击:攻击者非法入侵密码系统,采用伪造,修改,删除等手段向系统注入假消息进行欺骗(对密文具有破坏作用)
被动攻击:对一个保密系统采取截获密文并对其进行分析和攻击(对密文没有破坏作用)
密码体质:由明文空间,密文空间,密钥空间,加密算法和解密算法五部分组成
密码协议:也称安全协议,指以密码学为基础的消息交换的通信协议,目的是在网络环境中提供安全的服务
密码系统:指用于加密,解密的系统
柯克霍夫原则:数据的安全基于密钥而不是算法的保密。即系统的安全取决于密钥,对密钥保密,对算法公开。现代密码学设计的基本原则

密码分类

古典密码:以字符为基本加密单位
现代密码:以信息块为基本加密单元
密码分类--密码体制
对称密码:单钥密码或私钥密码,指加密密钥与解密密钥相同
非对称密码:双钥密码或公钥密码,指加密密钥与解密密钥不同,密钥分公钥,私钥
对称密码算法:单钥密码算法或私钥密码算法,指应用于对称密码的加密,解密算法
非对称密码算法:双钥密码算法或公钥密码算法,指对应于非对称密码的加密,解密算法
密码分类--明文处理方法
分组密码:指加密时将明文分成固定长度的组,用同一密钥和算法对每一块进行加密,输出也是固定长度的密文。多用于网络加密
流密码:也称序列密码。指加密时每次加密一位或者一个字节明文

散列函数

主要是用来验证数据的完整性
特点:长度不受限制,哈希值容易计算,散列运算过程不可逆
相关的算法:消息摘要算法MD5等,SHA--安全散列算法 MAC--消息认证码算法(MAC--苹果操作系统)

数字签名

主要是针对以数字的形式存储的消息进行的处理

安全机制

加密机制 数字签名机制 访问控制机制 数据完整性机制 认证机制
业务流填充机制 路由控制机制 公正机制

安全服务

认证(鉴别) 访问控制服务 数据保密性服务 数据完整性服务
抗否认性服务

java的安全组成

JCA(Java Cryptography Architecture)
提供基本的加密框架,比如信息摘要,数字签名
JCE(Java Cryptography Extension)
在JCA的基础上提供加密算法,DES,AES,RSA算法通过JCE提供
JSSE(Java Secure Socket Extension)
JSSE提供基于SSL的加密功能,主要用于网络传输
JAAS(Java Authentication and Authentication Service)
提供了在java平台上用户身份的验证
java.security
消息摘要
javax.crypto
安全消息摘要,消息认证(鉴别码)
java.net.ssl
安全套接字

第三方java扩展

Bouncy Castle
两种支持方案:1)配置;2)调用
Commons Codec
Apache
Base64,二进制,十六进制,字符集编码
url编码/解码

应用

Base64算法
消息摘要算法
对称加密算法
非对称加密算法
数字签名算法
数字证书
安全协议

code

在这里分别实现了Base64的三种算法,如下所示:
package com.edu.hpu.com;

import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Base64 {
      private static String src="hello world,base 64";
      public static void main(String[] args) {
    	  jdkBase64();
  		
  		  commonsCodesBase64();

  		  bouncyCastleBase64();
	}
  	public static void jdkBase64()
  	{
  		try 
  		{
  			BASE64Encoder encoder = new BASE64Encoder();
  			String encode = encoder.encode(src.getBytes());
  			System.out.println("encode:" + encode);
  			
  			BASE64Decoder decoder = new BASE64Decoder();
  			System.out.println("decode:" + new String(decoder.decodeBuffer(encode)));
  			
  		} catch (Exception e) {
  			e.printStackTrace();
  		}
  	}
  	
  	
  	// 用Apache的common codes实现
  	public static void commonsCodesBase64()
  	{
  		byte[] encodeBytes = Base64.encodeBase64(src.getBytes());
  		System.out.println("common codes encode:" + new String(encodeBytes));
  		
  		byte[] dencodeBytes = Base64.decodeBase64(encodeBytes);
  		System.out.println("common codes decode:" + new String(dencodeBytes));
  		
  	}
  	

  	// 用bouncy castle实现
  	public static void bouncyCastleBase64()
  	{
  		byte[] encodeBytes = org.bouncycastle.util.encoders.Base64.encode(src.getBytes());
  		System.out.println("bouncy castle encode:" + new String(encodeBytes));
  		
  		byte[] dencodeBytes = org.bouncycastle.util.encoders.Base64.decode(encodeBytes);
  		System.out.println("bouncy castle decode:" + new String(dencodeBytes));
  		
  	}

      
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值