什么是消息摘要
消息摘要(Message Digest)又称为数字摘要(Digital Digest)。它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生。如果消息在途中改变了,则接收者通过对收到消息的新产生的摘要与原摘要比较,就可知道消息是否被改变了。因此消息摘要保证了消息的完整性。 消息摘要采用单向Hash 函数将需加密的明文”摘要”成一串128bit的密文,这一串密文亦称为数字指纹(Finger Print),它有固定的长度,且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。这样这串摘要便可成为验证明文是否是”真身”的”指纹”了
消息摘要算法
1 MD5
2 SHA1
Java生成消消息摘要
Java 已经实现的SHA1和MD5的算法。MessageDigest类是用于创建封装了指纹算法的对象的工厂。它的静态方法getInstance返回继承了MessageDigest的类的某个类的实例。
MessageDigest的作用
1. 作为一个工厂类
2. 作为所有消息摘要算法的超类
下面是计算一个SHA1的消息摘要的方法
public class Digest {
public static void main(String[] args) {
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
InputStream in = new FileInputStream("J:\\message.txt");
int ch;
while((ch = in.read()) != -1){
messageDigest.update((byte)ch);
}
byte[] hash = messageDigest.digest();
String digest = new String(hash);
StringBuffer sb =new StringBuffer();
for(int i = 0; i < hash.length; i++ ){
int v = hash[i] & 0xFF;
if(v < 16) {
sb.append("0");
}
sb.append(Integer.toString(v,16).toUpperCase()).append(" ");
}
System.out.println(sb.toString());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
什么是消息摘要
消息摘要(Message Digest)又称为数字摘要(Digital Digest)。它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生。如果消息在途中改变了,则接收者通过对收到消息的新产生的摘要与原摘要比较,就可知道消息是否被改变了。因此消息摘要保证了消息的完整性。 消息摘要采用单向Hash 函数将需加密的明文”摘要”成一串128bit的密文,这一串密文亦称为数字指纹(Finger Print),它有固定的长度,且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。这样这串摘要便可成为验证明文是否是”真身”的”指纹”了
消息摘要算法
1 MD5
2 SHA1
Java生成消消息摘要
Java 已经实现的SHA1和MD5的算法。MessageDigest类是用于创建封装了指纹算法的对象的工厂。它的静态方法getInstance返回继承了MessageDigest的类的某个类的实例。
MessageDigest的作用
1. 作为一个工厂类
2. 作为所有消息摘要算法的超类
下面是计算一个SHA1的消息摘要的方法
public class Digest {
public static void main(String[] args) {
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
InputStream in = new FileInputStream("J:\\message.txt");
int ch;
while((ch = in.read()) != -1){
messageDigest.update((byte)ch);
}
byte[] hash = messageDigest.digest();
String digest = new String(hash);
StringBuffer sb =new StringBuffer();
for(int i = 0; i < hash.length; i++ ){
int v = hash[i] & 0xFF;
if(v < 16) {
sb.append("0");
}
sb.append(Integer.toString(v,16).toUpperCase()).append(" ");
}
System.out.println(sb.toString());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}