没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
使用数字签名验证文件是否被修改. 基本原理: 发送方: 1. 生成公钥和私钥并保存至文件public.key和private.key。 2. 根据要发送的文件内容生成签名并写入文件signature.dtx。 3. 将公钥文件、签名文件和要发送的文件一起发送给接受方。 接受方: 1. 读取发送方发送的公钥文件 2. 读取发送方发送的签名文件。 3. 读取发送方发送的文件。 4. 根据发送方发送的公钥对发送方发送的文件进行签名。 5. 对比生成的签名和发送方发送的签名是否一致。
资源推荐
资源详情
资源评论
使用数字签名验证文件是否被修改
基本原理:
发送方:
1. 生成公钥和私钥并保存至文件 public.key 和 private.key。
2. 根据要发送的文件内容生成签名并写入文件 signature.dtx。
3. 将公钥文件、签名文件和要发送的文件一起发送给接受方。
接受方:
1. 读取发送方发送的公钥文件
2. 读取发送方发送的签名文件。
3. 读取发送方发送的文件。
4. 根据发送方发送的公钥对发送方发送的文件进行签名。
5. 对比生成的签名和发送方发送的签名是否一致。
代码:
package com.security.example.example1;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.security.InvalidKeyException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.SignatureException;
import org.apache.log4j.Logger;
/**
* 发送方。
* @author lucky star
*
*/
public class Sender {
private static Logger log = Logger.getLogger(Sender.class);
public void writeKeysToFiles(String privateFileName,String
publicFileName) throws NoSuchAlgorithmException, FileNotFoundException,
IOException {
KeyPairGenerator keygen = KeyPairGenerator.getInstance("DSA");
keygen.initialize(1024);
KeyPair kp = keygen.generateKeyPair();
PrivateKey privateKey = kp.getPrivate();
PublicKey publicKey = kp.getPublic();
ObjectOutputStream out_private = new ObjectOutputStream(new
FileOutputStream(privateFileName));
out_private.writeObject(privateKey);
out_private.close();
ObjectOutputStream out_public = new ObjectOutputStream(new
FileOutputStream(publicFileName));
out_public.writeObject(publicKey);
out_public.close();
log.debug("已生成私钥文件:" + privateFileName + ",公钥文件:" +
publicFileName);
}
/**
* 读取私钥文件得到私钥,并根据文件内容生成签名并写入签名文件。
* @param privateFile:私钥文件。
* @param f:要发送的文件
* @throws FileNotFoundException:如果文件未找到
* @throws IOException:如果出现读写异常
* @throws ClassNotFoundException:如果类未找到
* @throws NoSuchAlgorithmException:如果没有此算法
* @throws InvalidKeyException:如果私钥不可用
* @throws SignatureException:如果签名失败
*/
public void send(File privateFile,File sigendFile,File f) throws
FileNotFoundException, IOException, ClassNotFoundException,
NoSuchAlgorithmException, InvalidKeyException, SignatureException {
if (privateFile==null) {
throw new FileNotFoundException("没有找到私钥文件!");
}
if (f == null) {
throw new FileNotFoundException("没有找到要加密的文件!");
}
// 读取文件,得到私钥
ObjectInputStream in = new ObjectInputStream(new
剩余6页未读,继续阅读
资源评论
- zzticslc2013-06-06基本还可以吧,不是很深入。
- xxmwyx2018-01-02包引入不成功
- qinqi05172013-05-05非常不错的教程
- binglanpiaoyu2013-05-25不错噢,也包含了一定的注释..小白也能看懂个大概..
luckystar2008
- 粉丝: 207
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- js-leetcode题解之158-read-n-characters-given-read4-ii-call
- js-leetcode题解之157-read-n-characters-given-read4.js
- js-leetcode题解之156-binary-tree-upside-down.js
- js-leetcode题解之155-min-stack.js
- js-leetcode题解之154-find-minimum-in-rotated-sorted-array-ii.js
- js-leetcode题解之153-find-minimum-in-rotated-sorted-array.js
- js-leetcode题解之152-maximum-product-subarray.js
- js-leetcode题解之151-reverse-words-in-a-string.js
- js-leetcode题解之150-evaluate-reverse-polish-notation.js
- js-leetcode题解之149-max-points-on-a-line.js
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功