Java实现Base64加密与解密
5星 · 超过95%的资源 需积分: 3 170 浏览量
更新于2024-09-13
收藏 3KB TXT 举报
"关于base64加密解密的方法"
在信息技术领域,Base64是一种用于将二进制数据编码为ASCII字符串的简单编码方式,以便于在网络上传输或存储。Base64编码的主要目的是将非文本内容转换为可打印的字符,通常用于在电子邮件系统或HTML中嵌入图像。在Java中,Base64编码和解码可以通过内置的`java.util.Base64`类进行处理,但在较旧的JDK版本中,可能需要使用`sun.misc.BASE64Encoder`和`sun.misc.BASE64Decoder`这两个非公开API。
标题中提到的"base64加密解密"是指将普通字符串通过Base64编码转化为另一形式的字符串,然后可以通过解码还原回原始内容。以下是一个简单的Java代码示例,展示了如何使用`sun.misc`包中的类进行Base64编码和解码:
```java
// Base64编码
public static String getBASE64(String s) {
if (s == null) return null;
return (new sun.misc.BASE64Encoder()).encode(s.getBytes());
}
// Base64解码
public static String getFromBASE64(String s) {
if (s == null) return null;
BASE64Decoder decoder = new BASE64Decoder();
try {
byte[] b = decoder.decodeBuffer(s);
return new String(b);
} catch (Exception e) {
return null;
}
}
```
需要注意的是,`sun.misc`包中的类并不是公开的API,因此在新的Java版本中可能会被弃用或无法使用。推荐使用`java.util.Base64`类来进行Base64操作,这是一个标准的、推荐的API,更稳定且跨版本兼容性更好:
```java
import java.util.Base64;
// Base64编码
public static String getBASE64(String s) {
if (s == null) return null;
return Base64.getEncoder().encodeToString(s.getBytes());
}
// Base64解码
public static String getFromBASE64(String s) {
if (s == null) return null;
return new String(Base64.getDecoder().decode(s));
}
```
描述中提到了Java中的MD5哈希计算,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它可以将任意长度的数据转化为固定长度的128位(16字节)哈希值。在Java中,我们可以使用`java.security.MessageDigest`类来计算MD5哈希:
```java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public String getMD5Hash(String originalPwd) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(originalPwd.getBytes());
byte[] digestedBytes = md.digest();
// ... 可能需要将哈希值转换为16进制字符串或其他形式
return new String(digestedBytes); // 直接返回原始的字节数组形式
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("MD5 algorithm not found", e);
}
}
```
在某些场景下,我们可能需要将MD5哈希值进一步处理,比如编码为Base64字符串。例如,如果MD5哈希值是用于生成特定格式的文件(如ARJ文件的manifest.mf),或者需要存储在数据库中作为不超过一定长度的字符串(如varchar类型),那么可以使用Base64编码来压缩这个哈希值:
```java
import javax.mail.internet.*;
import java.security.*;
public String getEncodedMD5Hash(String originalPwd) {
byte[] digestedBytes = getMD5Hash(originalPwd).getBytes();
return new String(Base64.encode(digestedBytes));
}
```
Base64编码和解码是数据传输和存储中常见的工具,而MD5哈希则常用于数据校验和密码存储。在Java中,正确地使用这些工具可以有效地处理二进制数据和增强数据安全性。
2014-12-16 上传
2019-09-18 上传
2011-10-21 上传
2017-11-02 上传
2018-09-26 上传
2016-06-30 上传
疯狂蜗牛
- 粉丝: 0
- 资源: 1
最新资源
- phutbol_APITESTING:API测试
- git-course
- The-Utopian-Tree:计算树木在Spring和夏季生长周期中的高度
- spring-mybatis-jetty:基于Spring+Mybatis+Jetty实现简单的用户信息接口
- 管理系统系列--中医药管理系统后台.zip
- ProjetSiteRabaste
- 物联网智能家居方案-基于Nucleo-STM32L073&机智云-电路方案
- DataStructure-Algrithims:实现多种语言的DS和算法的存储库
- tuchong-daily-android:土冲日报安卓应用
- 基于opencv的水下图像增强与修复
- html5exercise
- 管理系统系列--智能广告机管理系统.zip
- SheenWood.github.io:ddfgfggdh
- mynewfavs
- 毕业设计分享-智能家居控制系统电路图&PCB图、程序-电路方案
- activemq-in-action:从 code.google.compactivemq-in-action 自动导出