base64 编码

创作人 Leo


编辑时间 Tue Sep 1,2020 at 15:01


java base64

java 语言包提供了两种编码格式
1. Base64.getEncoder 实现的是 RFC-4648 的 表1 和 RFC-2045 标准
2. Base64.getUrlEncoder 实现的是 RFC-4648 的 表2 标准

两者的区别是 Base64.getUrlEncoder 是文件系统以及URL安全的,他将 + 和 / 改成了 - 和 _
注意:在和PHP对接时,需要使用 Base64.getEncoder,因为 PHP 的 base64_encode 实现的是 RFC-2045 标准

例:

	public String buildSign(Map<String, String> sArray) {
		String mysign = "";
		try {
			String prestr = createLinkString(sArray);
			
			Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
			SecretKeySpec secret_key = new SecretKeySpec(this.secret.getBytes(), "HmacSHA256");
			sha256_HMAC.init(secret_key);
			
			// Base64.getUrlEncoder 实现的是 RFC-4648 的 表2 标准,与 PHP base64_encode 实现的 RFC-2045 标准不一致
			// 主要体现在 62(+) 63(/) 上,RFC-4648 是文件系统安全的 62(-) 63(_)
			// Base64.getEncoder 与 PHP base64_encode 兼容
			// mysign = Base64.getUrlEncoder().encodeToString(sha256_HMAC.doFinal(prestr.getBytes())) ;
			mysign = Base64.getEncoder().encodeToString(sha256_HMAC.doFinal(prestr.getBytes())) ; 
		} catch (Exception e) {
			e.printStackTrace();
		}
		return mysign;
	}

参考:
PHP base64_encode
Java Class Base64
RFC 4648
RFC 2045


阅读:26
搜索
  • Linux 高性能网络编程库 Libevent 简介和示例 1927
  • Mac系统编译PHP7【20190929更新】 1796
  • Windows 安装Swoole 1558
  • Hadoop 高可用集群搭建 (Hadoop HA) 1472
  • Hadoop 高可用YARN 配置 1402
  • 小白鼠问题 1324
  • Hadoop Map Reduce 案例:好友推荐 1267
  • 自动化测试工具 Selenium 1131
  • GIT 分支管理 1064
  • Golang 使用 Grpc 985
简介
不定期分享软件开发经验,生活经验