导包
<!-- apache 加密工具组件 -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.14</version>
</dependency>
工具类
import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.codec.net.URLCodec;
public class YcsCodeCUtils {
public static final String CHARSET = "utf-8";
private static final Base64 base64 = new Base64();
private static final URLCodec urlCodec = new URLCodec();
public static String encodeByBase64(byte[] data) {
return base64.encodeAsString(data);
}
public static byte[] decodeByBase64(String str) {
return base64.decode(str);
}
public static String encodeByMd5(String data) {
return DigestUtils.md5Hex(data);
}
public static String encodeBySha1(byte[] data) {
return DigestUtils.sha1Hex(data);
}
public static String encodeUrl(String url) {
try {
return urlCodec.encode(url, CHARSET);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("URL链接编码失败!url = " + url + "\n" + e);
}
}
public static String decodeUrl(String url) {
try {
return urlCodec.decode(url, CHARSET);
} catch (Exception e) {
throw new RuntimeException("URL链接解码失败!url = " + url + "\n" + e);
}
}
}
测试
public class SelfTest {
private File desktopDir;
private String desktopPath;
@Before
public void desktopDirTest() {
desktopDir = FileSystemView.getFileSystemView().getHomeDirectory();
desktopPath = desktopDir.getAbsolutePath();
}
@Test
public void CodeCTest() throws Exception {
System.out.println(YcsCodeCUtils.encodeUrl("https://test.com?name=张三"));
System.out.println(YcsCodeCUtils.decodeUrl("https://oao1ht.axshare.com/#id=tj37hp&p=%E3%80%90%E8%87%AA%E8%90%A5_%E8%B4%B4%E7%89%8C%E3%80%91%E7%AD%9B%E9%80%89%E9%A1%B9%E4%BC%98%E5%8C%96-%E5%B7%B2%E7%A1%AE%E8%AE%A4-2%E4%B8%8A%E7%BA%BF"));
InputStream inputStream = new FileInputStream(desktopPath + "/entity.jpg");
byte[] data = new byte[inputStream.available()];
inputStream.read(data);
String s = YcsCodeCUtils.encodeByBase64(data);
byte[] bytes = YcsCodeCUtils.decodeByBase64(s);
YcsFileUtils.writeBytes(bytes, desktopPath + "/base64.jpg");
inputStream.close();
}
}