简单的 Java 加密算法有
- BASE64 严格地说,属于编码格式,而非加密算法
- MD5(Message Digest algorithm 5,信息摘要算法)
- SHA(Secure Hash Algorithm,安全散列算法)
- HMAC(Hash Message Authentication Code,散列消息鉴别码)
talk is cheap, show me the code.
TestEncrypt
import lombok.extern.slf4j.Slf4j;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import java.math.BigInteger;
import java.security.MessageDigest;
/**
* @description:
* @author: tanpeng
* @date: 2020-03-24 12:12
* @version: v1.0.0
*/
@Slf4j
public class TestEncrypt {
private static String CHARSET_UTF8 = "UTF-8";
private static int RADIX_16 = 1<<4;
private static int RADIX_32 = 1<<5;
public static void main(String[] args) throws Exception {
String plaintext = "123456";
byte[] plaintextByteArray = plaintext.getBytes(CHARSET_UTF8);
byte[] slatByteArray = "slat".getBytes(CHARSET_UTF8);
System.out.println("=================================== BASE64 ===================================");
String base64Encode = new BASE64Encoder().encode(plaintextByteArray);
byte[] base64Decode = new BASE64Decoder().decodeBuffer(base64Encode);
log.info("Base64 encode {}", base64Encode);
log.info("Base64 decode {}", new String(base64Decode, CHARSET_UTF8));
System.out.println("=================================== MD5 ===================================");
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(plaintextByteArray);
byte[] md5Encode = md5.digest(); // 调用digest方法后会重置状态为 INITIAL
String md5MessageDigest = new BigInteger(md5Encode).toString(RADIX_16);
log.info("MD5 encode {}", md5MessageDigest);
md5.update(plaintextByteArray);
md5.update(slatByteArray);
log.info("MD5 slat encode {}", new BigInteger(md5.digest()).toString(RADIX_16));
md5.update(plaintextByteArray);
md5.update(slatByteArray);
log.info("MD5 slat encode {}", new BigInteger(md5.digest()).toString(RADIX_16));
System.out.println("=================================== SHA-1 ===================================");
MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
sha1.update(plaintextByteArray);
log.info("SHA-1 encode {}", new BigInteger(sha1.digest()).toString(RADIX_32));
sha1.update(plaintextByteArray);
sha1.update(slatByteArray);
log.info("SHA-1 slat encode {}", new BigInteger(sha1.digest()).toString(RADIX_32));
sha1.update(plaintextByteArray);
sha1.update(slatByteArray);
log.info("SHA-1 slat encode {}", new BigInteger(sha1.digest()).toString(RADIX_32));
System.out.println("=================================== SHA-256 ===================================");
MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
sha256.update(plaintextByteArray);
log.info("SHA-256 encode {}", new BigInteger(sha256.digest()).toString(RADIX_32));
sha256.update(plaintextByteArray);
sha256.update(slatByteArray);
log.info("SHA-256 slat encode {}", new BigInteger(sha256.digest()).toString(RADIX_32));
sha256.update(plaintextByteArray);
sha256.update(slatByteArray);
log.info("SHA-256 slat encode {}", new BigInteger(sha256.digest()).toString(RADIX_32));
}
}