Java密码学(1)——Base64算法

最近想总结一下以前用到的密码学知识用java实现,准备汇总成一个系列

初步决定包含以下内容:

  1. 传输算法Base64
  2. 验证数据完整性:消息摘要算法
  3. 对称加密算法
  4. 非对称加密算法
  5. 带密钥的消息摘要算法:数字签名算法
  6. 数字证书
  7. 安全协议HTTPS
  • 热身准备

大部分算法可以通过Sun的JDK实现,但有更简单的第三方包可以帮助我们。

我采用的是commons-codec,下载地址http://commons.apache.org/proper/commons-codec/

下载是最新的commons-codec-1.9.jar

 

使用commons-codec有很多方便的地方,比如JDK实现MD5算法返回的是byte[],commons-codec可以直接返回String类型,并且支持输入参数为byte[]、String、InputStream等各种形式。

实例里面用到commons-codec会特别说明。

 

最后介绍密钥的存储形式。

对一个8字节的密钥

用String存储可以表示为String key = "4041424344454647";

用byte[]存储可以表示为byte[] key = new byte[]{0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47};

两者之间可以通过commons-codec的Hex类进行转换

String转换为byte[]

String key = "4041424344454647";
byte[] b = Hex.decodeHex(key.toCharArray());

 byte[]转换为String

byte[] key = new byte[]{0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47};
String s = Hex.encodeHexString(key);

 

  •  Base64算法实现

 介绍第一个算法——Base64。

Base64算法是对一个字符串进行编码和解码,算不上真正的加密算法。

 

用commons-codec的代码实现

	/**
	 * BASE64编码
	 * @param data
	 * @return
	 */
	public static String Base64encode(String data) {
		try {
			byte[] b = Base64.encodeBase64(data.getBytes(ENCODING));
			return new String(b, ENCODING);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * BASE64解码
	 * @param data
	 * @return
	 */
	public static String Base64decode(String data) {
		try {
			byte[] b = Base64.decodeBase64(data.getBytes(ENCODING));
			return new String(b, ENCODING);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return null;
	}

 测试代码

String data = "yeliang";
System.out.println("原文:"+data);
		
String encode = Base64encode(data);
System.out.println("Base64编码后:"+encode);
String decode = Base64decode(encode);
System.out.println("Base64解码后:"+decode);

 运行结果

原文:yeliang
Base64编码后:eWVsaWFuZw==
Base64解码后:yeliang

 

  • Base64算法的典型应用

电子邮件传输

数字证书存储

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值