社区
Java SE
帖子详情
求数字签名源代码示例
topbit
2003-08-26 09:52:46
求数字签名源代码示例。
...全文
114
2
打赏
收藏
求数字签名源代码示例
求数字签名源代码示例。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
stonewang
2003-08-27
打赏
举报
回复
http://expert.csdn.net/Expert/TopicView1.asp?id=2096773
http://expert.csdn.net/Expert/TopicView1.asp?id=2097451
http://expert.csdn.net/Expert/TopicView1.asp?id=2137716
NetixChina
2003-08-27
打赏
举报
回复
package sample.crypto;
import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ByteArrayOutputStream;
import java.security.KeyPair;
import java.security.Signature;
import java.security.PublicKey;
import java.security.PrivateKey;
import java.security.MessageDigest;
import java.security.KeyPairGenerator;
import java.security.SignatureException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.interfaces.RSAPublicKey;
import java.security.interfaces.RSAPrivateKey;
public final class DigitalSignatureSample
extends Object
{
public static void main(String[] args)
throws IOException,
SignatureException,
InvalidKeyException,
ClassNotFoundException,
NoSuchAlgorithmException
{
KeyPairGenerator keyPairGenerator = null;
KeyPair keyPair = null;
PublicKey publicKey = null;
PrivateKey privateKey = null;
byte[] source = null;
byte[] result = null;
boolean passed = false;
String publicKeyFileName = null;
String privateKeyFileName = null;
String sourceFileName = null;
String resultFileName = null;
String messageDigestAlgorithm = null;
for (int i = 0; i<CRYPTOGRAPHERS.length; i++)
{
publicKeyFileName =
PUBLIC_KEY_FILE_NAME+CRYPTOGRAPHERS[i]+".txt";
privateKeyFileName =
PRIVATE_KEY_FILE_NAME+CRYPTOGRAPHERS[i]+".txt";
sourceFileName =
SOURCE_FILE_NAME+CRYPTOGRAPHERS[i]+".txt";
resultFileName =
RESULT_FILE_NAME+CRYPTOGRAPHERS[i]+".txt";
messageDigestAlgorithm = "MD5with"+CRYPTOGRAPHERS[i];
source = loadSource(getSourceFile());
keyPairGenerator =
KeyPairGenerator.getInstance(CRYPTOGRAPHERS[i]);
keyPairGenerator.initialize(1024);
keyPair = keyPairGenerator.generateKeyPair();
publicKey = keyPair.getPublic();
privateKey = keyPair.getPrivate();
if ((publicKey instanceof RSAPublicKey)&&
(privateKey instanceof RSAPrivateKey))
result = signRSA(
(RSAPrivateKey)privateKey,
messageDigestAlgorithm,
source);
savePublicKey(publicKey, publicKeyFileName);
savePrivateKey(privateKey, privateKeyFileName);
saveResult(result, resultFileName);
publicKey = loadPublicKey(publicKeyFileName);
privateKey = loadPrivateKey(privateKeyFileName);
result = loadResult(resultFileName);
if ((publicKey instanceof RSAPublicKey)&&
(privateKey instanceof RSAPrivateKey))
passed = verifyRSA(
(RSAPublicKey)publicKey,
messageDigestAlgorithm,
source,
result);
System.out.println("Veritication: "+passed);
}
}
private static void saveByteArray(
byte[] byteArray,
String fileName)
throws IOException
{
FileOutputStream outFile =
new FileOutputStream(fileName);
outFile.write(byteArray);
outFile.close();
}
private static byte[] loadByteArray(
String fileName)
throws IOException
{
FileInputStream inFile = new FileInputStream(fileName);
ByteArrayOutputStream outByteArray =
new ByteArrayOutputStream();
int i = -1;
while ((i = inFile.read())!=-1)
outByteArray.write((byte)i);
byte[] byteArray = outByteArray.toByteArray();
inFile.close();
outByteArray.close();
return byteArray;
}
private static void saveObject(
Object object,
String fileName)
throws IOException
{
FileOutputStream outFile =
new FileOutputStream(fileName);
ObjectOutputStream outObject =
new ObjectOutputStream(outFile);
outObject.writeObject(object);
outObject.close();
outFile.close();
}
private static Object loadObject(
String fileName)
throws IOException,
ClassNotFoundException
{
FileInputStream inFile =
new FileInputStream(fileName);
ObjectInputStream inObject =
new ObjectInputStream(inFile);
Object object = inObject.readObject();
inObject.close();
inFile.close();
return object;
}
private static void saveSource(
byte[] source,
String fileName)
throws IOException
{
saveByteArray(source, fileName);
}
private static byte[] loadSource(File file)
throws IOException
{
FileInputStream inFile = new FileInputStream(file);
ByteArrayOutputStream outByteArray =
new ByteArrayOutputStream();
int i = -1;
while ((i = inFile.read())!=-1)
outByteArray.write((byte)i);
return outByteArray.toByteArray();
}
private static void saveResult(
byte[] result,
String fileName)
throws IOException
{
saveByteArray(result, fileName);
}
private static byte[] loadResult(
String fileName)
throws IOException
{
return loadByteArray(fileName);
}
private static void savePublicKey(
PublicKey publicKey,
String fileName)
throws IOException
{
saveObject(publicKey, fileName);
}
private static PublicKey loadPublicKey(
String fileName)
throws IOException,
ClassNotFoundException
{
return (PublicKey)loadObject(fileName);
}
private static void savePrivateKey(
PrivateKey privateKey,
String fileName)
throws IOException
{
saveObject(privateKey, fileName);
}
private static PrivateKey loadPrivateKey(
String fileName)
throws IOException,
ClassNotFoundException
{
return (PrivateKey)loadObject(fileName);
}
private static byte[] signRSA(
RSAPrivateKey privateKey,
String algorithm,
byte[] source)
throws SignatureException,
InvalidKeyException,
NoSuchAlgorithmException
{
Signature signature = Signature.getInstance(algorithm);
signature.initSign(privateKey);
signature.update(source);
return signature.sign();
}
private static boolean verifyRSA(
RSAPublicKey publicKey,
String algorithm,
byte[] source,
byte[] result)
throws SignatureException,
InvalidKeyException,
NoSuchAlgorithmException
{
Signature signature = Signature.getInstance(algorithm);
signature.initVerify(publicKey);
signature.update(source);
return signature.verify(result);
}
private static File getSourceFile()
throws IOException
{
return new File("Source.txt");
}
private static final String[] CRYPTOGRAPHERS =
new String[]
{
"RSA"
};
private static final String RESULT_FILE_NAME =
"DigitalSignatureResult_";
private static final String SOURCE_FILE_NAME =
"DigitalSignatureSource_";
private static final String PUBLIC_KEY_FILE_NAME =
"DigitalSignaturePublicKey_";
private static final String PRIVATE_KEY_FILE_NAME =
"DigitalSignaturePrivateKey_";
private DigitalSignatureSample()
{
super();
}
}
JAVA上百实例源码以及开源项目
源代码
各种EJB之间的调用
示例
7个目标文件 摘要:Java源码,初学实例,EJB调用实例 各种EJB之间的调用源码
示例
,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB 基于JAVA的UDP服务器模型
源代码
...
java源码包---java 源码 大量 实例
关于
数字签名
:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...
Java
数字签名
Signature简介
数字签名
是安全体系中最重要的安全算法,
数字签名
...通过本系列的学习,可以了解
数字签名
的原理,
数字签名
及验证过程,了解
数字签名
引擎类,本课程给出来最基本的
数字签名
的引擎类
示例
,便于用户学习和使用
数字签名
编程
java源码包2
关于
数字签名
:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...
java源码包3
关于
数字签名
:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章