Java安全通信、数字证书及应用实践[收藏此页] [打印]
作者:佚名 2007-10-19 内容导航:基础知识第1页:基础知识 第2页: Java中的数字证书的生成及维护方法 第3页: 数字证书的签发(签名)第4页:运行我们的 applet
【IT168 技术文档】
一、基础知识
计算机安全通信过程中,常使用消息摘要和消息验证码来保证传输的数据未曾被第三方修改。
消息摘要是对原始数据按照一定算法进行计算得到的结果,它主要检测原始数据是否被修改过。消息摘要与加密不同,加密是对原始数据进行变换,可以从变换后的数据中获得原始数据,而消息摘要是从原始数据中获得一部分信息,它比原始数据少得多,因此消息摘要可以看作是原始数据的指纹。
例:下面一段程序计算一段字符串的消息摘要
package com.messagedigest;
import java.security.*;
public class DigestPass {
public staticvoid main(String[] args) throws Exception{
Stringstr="Hello,I sent to you 80 yuan.";
MessageDigestmd = MessageDigest.getInstance("MD5");//常用的有MD5,SHA算法等
md.update(str.getBytes("UTF-8"));//传入原始字串
byte[] re =md.digest();//计算消息摘要放入byte数组中
//下面把消息摘要转换为字符串
Stringresult = "";
for(inti=0;i<re.length;i){
result =Integer.toHexString((0x000000ff&re[i])|0xffffff00).substring(6);
}
System.out.println(result);
}
}
当我们有时需要对一个文件加密时,以上方式不再适用。
又例:下面一段程序计算从输入(出)流中计算消息摘要。
package com.messagedigest;
import java.io.*;
import java.security.*;
public class DigestInput {
public staticvoid main(String[] args) throws Exception{
StringfileName = "test.txt";
MessageDigestmd = MessageDigest.getInstance("MD5");
FileInputStreamfin = new FileInputStream(fileName);
DigestInputStreamdin = new DigestInputStream(fin,md);//构造输入流
//DigestOutputStreamdout = new DigestOutputStream(fout,md);
//使用输入(出)流可以自己控制何时开始和关闭计算摘要
//也可以不控制,将计算
//初始时是从开始即开始计算,如我们可以开始时关闭,然后从某一部分开始,如下:
//din.on(false);
int b;
while((b=din.read())!=-1){
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-27683-1.html
那还不感觉用鱼雷
拉森”号驱逐舰为美“阿利·伯克”级导弹驱逐舰中的第32艘
钱多就可以多娶