新闻正文
,
☆──────────────────────────────────────☆
jixiang (安静) 于 Wed Apr 30 21:35:25 2003)
提到:
☆──────────────────────────────────────☆
allenson (allen) 于 2003年05月02日00:13:36 星期五 提到:
我是这样做的.
1.用keytool生长一个证书
2.用jarsigner把这个证书附加在jar上面就可以了
java.sun.com上面有这样的文章,好像是webstart的说明文档!
☆──────────────────────────────────────☆
Fukada.bbs@bbs.cqupt.edu.cn (feidao) 于 Fri May 2 12:55:50 2003)
提到:
转信站: SJTU!news.neu.edu.cn!news.zixia.net!news.happynet.org!CQUPT
java Tcp/IP编程这本书有详细的介绍
☆──────────────────────────────────────☆
crack.bbs@bbs.hit.edu.cn (幸福不是必然的) 于 Fri May 2 16:57:29 2003)
提到:
转信站: SJTU!news.neu.edu.cn!HIT
javatutorial中就有。
☆──────────────────────────────────────☆
Seagle (随风) 于 2003年05月02日17:22:10 星期五 提到:
首先看你是什么用途,商业用途,
先向CA机构买数字证书,如verisign.
verisign的网站上有very detailed 文档。
信区: Java
标 题: Re: 【合集】谁用java做过数字签名
做签名最好用JDK1.4,1.4装好后就直接能用,不需要设置其他东西了。
import java.io.*;
import java.security.*;
import java.security.spec.*;
import java.security.interfaces.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import javax.crypto.interfaces.*;
public class Sign{
public static void main(String args[ ]) throws Exception{
//获取要签名的数据,放在data数组
FileInputStream f=new FileInputStream("msg.dat");
int num=f.available();
byte[ ] data=new byte[num];
f.read(data);
//获取私钥
FileInputStream f2=
new FileInputStream("Skey_RSA_priv.dat");
ObjectInputStream b=new ObjectInputStream(f2);
RSAPrivateKey prk=(RSAPrivateKey)b.readObject( );
Signature s=Signature.getInstance("MD5WithRSA");
s.initSign(prk);
s.update(data);
System.out.println("");
byte[ ] signeddata=s.sign( );
// 打印签名
for(int i=0;i<data.length;i++){
System.out.print(signeddata[i]+",");
}
//保存签名
FileOutputStream f3=new FileOutputStream("Sign.dat");
f3.write(signeddata);
}
}
程序最后将签名结果在屏幕上显示,并保存在文件Sign.dat中。
在当前目录中存放三个文件:本小节的程序:Sign.class、秘密保存的私钥Skey_RSA_pri
v.dat和要签名的文件:msg.dat。msg.dat中不妨输入一段内容:
I have got your $800
输入java sign来运行程序,则得到如下结果:
49,-7,-48,-119,-14,68,-65,-27,24,-22,-128,54,-30,39,120,-99,56,92,14,21,85,106
,
这个就是文件msg.dat签名的结果,它同时保存在文件Sign.dat中。
如何获得私钥文件Skey_RSA_priv.dat呢?可使用如下程序:
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
public class Skey_RSA{
public static void main(String args[]) throws Exception{
KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp=kpg.genKeyPair();
PublicKey pbkey=kp.getPublic();
PrivateKey prkey=kp.getPrivate();
// 保存公钥
FileOutputStream f1=new FileOutputStream("Skey_RSA_pub.dat");
ObjectOutputStream b1=new ObjectOutputStream(f1);
b1.writeObject(pbkey);
// 保存私钥
FileOutputStream f2=new FileOutputStream("Skey_RSA_priv.dat");
ObjectOutputStream b2=new ObjectOutputStream(f2);
b2.writeObject(prkey);
}
}
输入java Skey_RSA运行程序,当前目录下将生成两个文件:Skey_RSA_pub.dat和Skey_RS
A_priv.dat,前者保存着公钥,后者保存着私钥。将文件Skey_RSA_pub.dat对外公布(如
放在Web服务器上给大家下载,或者直接拷贝给所有需要的人),而Skey_RSA_priv.dat秘
密保存。(摘自《Java安全性编程实例》)
http://javabook.126.com ※ 修改:·xyx 於 05月06日13:29:52 修改本文
收藏到ViVi 收藏此页到365Key
上一篇:
求助,高人请进~谢谢先~ 下一篇:
请教UDP编程的一个问题