常用的Java加密技术和核心代码系列:
Base64以及关于Base64遇到的坑 https://blog.csdn.net/haponchang/article/details/106094115
消息摘要算法 https://blog.csdn.net/haponchang/article/details/106096542
对称加密(DES、3DES、AES、PBE) https://blog.csdn.net/haponchang/article/details/106096766
非对称加密(RSA、DH) https://blog.csdn.net/haponchang/article/details/106097998
数字签名证书 https://blog.csdn.net/haponchang/article/details/106098779
概念
消息摘要(Message Digest)又称为数字摘要(Digital Digest)。它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生。HASH函数的抗冲突性使得如果一段明文稍有变化,哪怕只更改该段落的一个字母,通过哈希算法作用后都将产生不同的值。而HASH算法的单向性使得要找到哈希值相同的两个不同的输入消息,在计算上是不可能的。所以数据的哈希值,即消息摘要,可以检验数据的完整性。
通俗点说,就是通过消息摘要算法产生一段String。传输内容进行消息摘要处理后的内容,这样就算服务器被攻破,Hack也无法知道用户真实的内容是什么。
常见的有MD5和SHA。
MD5
public String encode(String src){
try
{
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] encodeBytes = md.digest(src.getBytes());
return Hex.encodeHexString(encodeBytes);
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
return null;
}
public String decode(String src){
throw new RuntimeException("MD5 no decode");
}
SHA
public String encode(String src){
try
{
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(src.getBytes());
return Hex.encodeHexString(md.digest());
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
return null;
}
public String decode(String src){
throw new RuntimeException("SHA no decode");
}