欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

几种常见的加密算法

程序员文章站 2024-03-16 19:54:46
...

下面写几种常见的方法涉及到的工具方法。

1. Base64加密算法

Base64加密算法是网络上最常见的用于传输8bit字节代码的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在JAVAPERSISTENCE系统HIBEMATE中,采用了Base64来将一个较长的唯一标识符编码为一个字符串,用作HTTP表单和HTTPGETURL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。
String 和 base64 的相互转换:

public static String stringtobase64(String s) {
	try {
		String encodeStr = Base64.encodeToString(s.getBytes(), Base64.DEFAULT);
		return encodeStr;
	} catch (Exception e) {
		return s;
	}
}

public static String base64tostring(String s) {
	try {
		String decodeStr = new String(Base64.decode(s.getBytes(), Base64.DEFAULT));
		return decodeStr;
	} catch (Exception e) {
		return s;
	}
}

2.Md5(消息摘要)

MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。对MD5加密算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成—个128位散列值。

MD5被广泛用于各种软件的密码认证和钥匙识别上。MD5用的是哈希函数,它的典型应用是对一段信息产生信息摘要,以防止被篡改。MD5的典型应用是对一段Message产生fingerprin指纹,以防止被“篡改”。如果再有—个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。MD5还广泛用于操作系统的登陆认证上,如UNIX、各类BSD系统登录密码、数字签名等诸多方。

/**
 * Md5Encoder
 *
 */
public static String encodeMD5toUpperCase32(String str) {
	try {
		MessageDigest md;
		md = MessageDigest.getInstance("MD5");
		byte[] bt = str.getBytes();
		md.update(bt);
		str = bytes2Hex(md.digest()); // to HexString
	} catch (Exception e) {
		e.printStackTrace();
	}

	return str.trim().toUpperCase();
}

private static String bytes2Hex(byte[] bts) {
	StringBuilder des = new StringBuilder();
	String tmp;
	for (byte bt : bts) {
		tmp = (Integer.toHexString(bt & 0xFF));
		if (tmp.length() == 1) {
			des.append("0");
		}
		des.append(tmp);
	}
	return des.toString();
}

关于更多加密算法的介绍和区别,详情参考如下文章:
https://www.cnblogs.com/sunxuchu/p/5483956.html
https://blog.csdn.net/ddffr/article/details/77153127