RSA

 

实现签名与验证:

package com.fosu.rsa;


import java.io.IOException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.junit.Test;

import com.fosu.util.Base64;

/**
 * @author ZL
 * 
 * 利用rsa生成一对公私钥
 * SHA1withRSA进行签名与验签
 * 可参考https://docs.oracle.com/javase/tutorial/security/apisign/index.html
 */
public class RSATest {

	public static void main(String[] args)  throws Exception{
		KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA");
		gen.initialize(2048);
		KeyPair pair = gen.generateKeyPair();
		//rsa生成一对公私钥
		PublicKey publicKey  = pair.getPublic();
		PrivateKey privateKey  = pair.getPrivate();
		String str = "sss";

		List<String> list = send(privateKey,str);
		
		/**
		 * list.get(0);   str 代表中间传输的数据
		 * list.get(1);   sign 
		 */ 
		
		boolean flag = receive(publicKey,list);
		System.out.println(flag);

	}

	// 发送方
	public static List<String> send(PrivateKey privateKey, String str) throws Exception{

		//SHA1withRSA算法进行签名
		Signature sign = Signature.getInstance("SHA1withRSA");
		sign.initSign(privateKey);
		byte[] data = str.getBytes();

		// 更新用于签名的数据
		sign.update(data);
		byte[] signature = sign.sign();
		String sign_ = Base64.encode(signature);
		System.out.println(Arrays.toString(signature));


		//String sign_ = new String(signature, StandardCharsets.US_ASCII);

		List<String> list = new ArrayList<>();
		list.add(str);
		list.add(sign_);
		return list;
	}

	// 校验方
	public static boolean receive(PublicKey publicKey,List<String> list) throws Exception{
		String str = list.get(0);
		String sign = list.get(1);
		System.out.println("sign:"+sign);
		//byte[] signbyte = sign.getBytes(StandardCharsets.US_ASCII);
		byte[] signbyte =  Base64.decode(sign);
		System.out.println(Arrays.toString(signbyte));


		Signature verifySign = Signature.getInstance("SHA1withRSA");
		verifySign.initVerify(publicKey);
		//用于验签的数据
		verifySign.update(str.getBytes());
		boolean flag = verifySign.verify(signbyte);
		System.out.println(flag);
		return flag;
	}

	@Test
	public void test() throws IOException {
		try {
			KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA");
			gen.initialize(2048);
			KeyPair pair = gen.generateKeyPair();
			//rsa生成一对公私钥
			PublicKey publicKey  = pair.getPublic();
			PrivateKey privateKey  = pair.getPrivate();



			//SHA1withRSA算法进行签名
			Signature sign = Signature.getInstance("SHA1withRSA");
			sign.initSign(privateKey);
			byte[] data = "sss".getBytes();
			//更新用于签名的数据
			sign.update(data);
			byte[] signature = sign.sign();



			Signature verifySign = Signature.getInstance("SHA1withRSA");
			verifySign.initVerify(publicKey);
			//用于验签的数据
			verifySign.update(data);
			boolean flag = verifySign.verify(signature);
			System.out.println(flag);

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

### Autopsy 和 Rsarsa 技术文档与使用指南 #### 关于 Autopsy 的介绍 Autopsy 是一款图形化的数字取证平台,旨在帮助调查人员高效处理计算机犯罪案件。该工具支持多种数据源的解析和分析功能,包括硬盘驱动器、手机和其他存储介质。通过集成模块化设计,Autopsy 可以轻松扩展其能力范围,满足不同场景的需求[^1]。 ```bash # 启动 Autopsy 工具 autopsy & ``` #### 使用 Autopsy 进行基本操作 为了启动 Autopsy 并加载案例,只需运行安装目录中的可执行文件即可。一旦进入界面,用户可以选择创建新的项目或打开已有项目。对于每一个新建项目,都需要指定一个唯一的名称以及保存位置。之后便能导入证据文件并开始深入挖掘其中的信息了。 #### Rsarsa 技术概述 Rsarsa 主要指 RSA 加密算法的一种实现方式,在信息安全领域扮演着重要角色。RSA 属于非对称加密体系的一部分,利用一对密钥——公钥用于加密消息而私钥负责解密过程。这种机制确保即使第三方截获传输内容也无法轻易获取原始信息。 ```python from Crypto.PublicKey import RSA key = RSA.generate(2048) public_key = key.publickey().export_key() private_key = key.export_key() print(f"Public Key:\n{public_key}") print(f"\nPrivate Key:\n{private_key}") ``` #### 配置管理工具的应用 实践中,安全配置和加固需要依据具体操作系统文档及安全指南实施;例如 Linux 中可通过 `/etc/skel` 下文件定义新用户的初始设置。此外借助 Ansible 或 Puppet 等自动化工具能够简化这一流程,提高效率的同时减少人为错误的发生概率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值