⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filesign.java

📁 对文件内容进行加密、解密、签名及验证签名
💻 JAVA
字号:
import java.security.KeyPairGenerator;
import java.security.KeyPair;
import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;

import java.security.Signature;
import java.security.SignatureException;
import java.io.*;
import java.lang.*;

import java.io.IOException;
import java.io.FileNotFoundException;
import java.security.SignatureException;
import java.security.NoSuchAlgorithmException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

public class filesign
{
	public static void main(String arg[])
	{
		FileInputStream file=null;
		byte[] filedata=null;
		byte[] endata=null;
		byte[] sinfiledata=null;
		
		KeyPairGenerator keygen=null;
		KeyPair key=null;
		Cipher cipher=null;
		
		try{
			//filedata=new byte[(new Long((new File("sheng.txt")).length())).intValue()];
			filedata=new byte[(new Long((new File("sheng.txt")).length())).intValue()];
			
			file=new FileInputStream("sheng.txt");
			file.read(filedata);
			System.out.println("文件的信息是:");
			System.out.println(new String(filedata));
		}
		catch(FileNotFoundException e)
		{
			System.out.println("FileNotFound");
			System.out.println(e.getMessage());
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
		
		
		
		try{
			//生成密钥
			//KeyPairGenerator keygen=KeyPairGenerator.getInstance("RSA");
			keygen=KeyPairGenerator.getInstance("RSA");
			keygen.initialize(1024);
			//KeyPair key=keygen.generateKeyPair();
			key=keygen.generateKeyPair();
			
			//Cipher cipher=Cipher.getInstance("RSA");
			cipher=Cipher.getInstance("RSA");
			
			//加密信息
			cipher.init(Cipher.ENCRYPT_MODE,key.getPrivate());
			endata=cipher.doFinal(filedata);
			
			System.out.println("加密后的信息:");
			System.out.println(new String(endata));
			
			//加密后的信息存入enfile.txt文件中
			FileOutputStream fileoutput=null;
			File enfile=new File("enfile.txt");
			if(enfile.exists())
			{
				System.out.println("file is existed");
				fileoutput=new FileOutputStream("enfile.txt");
			}
			else
			  if(enfile.createNewFile())
			  {
			  	System.out.println("创建文件成功");
			  	fileoutput=new FileOutputStream("enfile.txt");
			  }
			  else
			   System.out.println("创建文件失败");
			 fileoutput.write(endata);
			 fileoutput.close();
			 
			//signature签名
			Signature signature=Signature.getInstance("SHA1WithRSA");
			signature.initSign(key.getPrivate());
			signature.update(filedata);
			byte[] signaturedata=signature.sign();
			
			System.out.println("签名后的信息");
			System.out.println(new String(signaturedata));
			
			//签名后的信息存入signaturefile.txt文件中
			fileoutput=null;
			File signaturefile=new File("signaturefile.txt");
			if(signaturefile.exists())
			{
				System.out.println("the signaturefile.txt is existed文件存在");
				fileoutput=new FileOutputStream(signaturefile);
			}
			else
			{
				if(signaturefile.createNewFile())
				{
					System.out.println("create signaturefile.txt successfully");
					fileoutput=new FileOutputStream("signaturefile.txt");
				}
				else
				 System.out.println("创建签名文件失败");
			}
			fileoutput.write(signaturedata);
			fileoutput.close();
			
			
			//从签名文件中取出签名信息进行验证
			file=null;
			sinfiledata=new byte[(new Long((new File("signaturefile.txt")).length()).intValue())];
			file=new FileInputStream("signaturefile.txt");
			file.read(sinfiledata);
			
			System.out.println("读入签名文件信息为");
			System.out.println(sinfiledata);
			
			signature.initVerify(key.getPublic());
			signature.update(filedata);
			//验证
			if(signature.verify(sinfiledata))
			 System.out.println("验证成功");
			else
			 System.out.println("验证失败");
	
		}
		catch(IllegalBlockSizeException e)
		{
			System.out.println(e.getMessage());
		}
		catch(NoSuchAlgorithmException e)
		{
			e.printStackTrace();
		}
		catch(InvalidKeyException e)
		{
			e.printStackTrace();
		}
		catch(NoSuchPaddingException e)
		{
			System.out.println(e.getMessage());
		}
		catch(BadPaddingException e)
		{
			System.out.println(e.getMessage());
		}
		catch(FileNotFoundException e)
		{
			System.out.println(e.getMessage()+"FileNotFound");
		}
		catch(IOException e)
		{
			System.out.println(e.getMessage()+"IOException");
		}
		catch(SignatureException e)
		{
			System.out.println(e.getMessage()+"Signature Failed");
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -