南邮大作业----文本处理与加密软件

(一)课题内容

文本处理与加密软件要求首先把一个文本中满足特定特征的文本提取出来,然后对提取出来的文本进行加密处理。

(二)课题要求

(1)设计满足特征的文本的文法;

(2)词法分析模块结构清晰,可以借助Lex或JavaCC、Antlr等工具自动生成词法分析程序;

(3)选择某种加密算法对所提取的文本进行加密;

(4)界面美观。

这里我们采用hanlp的汉语言处理包http://hanlp.linrunsoft.com/

hanlp中文分词后还提供了关键字提取的功能(基于textrank),一般关键字采用tf-idf算法或者textrank,其中textrank可以在单文本中使用

使用Hanlp需要导入jar包和依赖数据集,并在src下提供配置文件

编码和解码采用的是Base64,Base64并不算是加密算法,只能算是编码算法,不过这里足够用了。

本程序所使用的jar包如下:hanlp-1.2.8 jar ,common-codec-1.8 jar ,JTattoo-1.611 jar

show.java

import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;

public class show  extends JFrame implements ActionListener{
	JMenuBar menuBar;
	JMenu menu,menu2;
	JMenuItem menuitem,menuitem2,menuitem3,menuitem4,menuitem5;
	JTextArea jta;
	public show(){
		setTitle("我的关键字加密软件");
		setLayout(null);
		setBounds(800,200,400,500);  
		Container container=getContentPane(); 
		menuBar=new JMenuBar();
		setJMenuBar(menuBar);
		menu=new JMenu("开始");
		menuBar.add(menu);
		menuitem=new JMenuItem("读取文件");  
		menu.add(menuitem);  
		menuitem.addActionListener(this);
		menuitem2=new JMenuItem("获得关键字");  
		menu.add(menuitem2);  
		menuitem2.addActionListener(this);
		menuitem3=new JMenuItem("加密文件");  
		menu.add(menuitem3);  
		menuitem3.addActionListener(this);
		menuitem5=new JMenuItem("解密文件");  
		menu.add(menuitem5);  
		menuitem5.addActionListener(this);
		menu2=new JMenu("退出");
		menuBar.add(menu2);
		menuitem4=new JMenuItem("退出");  
		menu2.add(menuitem4);  
		menuitem4.addActionListener(this);
		jta=new JTextArea();
		jta.setBounds(15,20,350,380);
		jta.setLineWrap(true);        //激活自动换行功能 
		jta.setWrapStyleWord(true);            // 激活断行不断字功能
		jta.setFont(new Font("微软雅黑",0,15));
		JScrollPane jsp = new JScrollPane(jta); 
		jsp.setBounds(15,20,350,380);   
		container.add(jsp);
		setVisible(true);  
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
	}
	 public void actionPerformed(ActionEvent e){  
		 if (e.getSource()==menuitem) {  
			 String s=my_filechooser.filechooser();
			 try {
				jta.setText(Helper.Read(s));
			} catch (IOException e1) {
				System.out.println("打开文件失败");
				e1.printStackTrace();
			}
		 }
		 if (e.getSource()==menuitem2) {  
			 String s=jta.getText();
			 jta.setText(Helper.getKeyWord(s));
		 }
		 if (e.getSource()==menuitem3) {  
			 String s=jta.getText();
			 jta.setText(Helper.commonsEnCodesBase64(s));
		 }
		 if (e.getSource()==menuitem4) {  
			 System.out.println("4");
			 System.exit(1);
		 }
		 if (e.getSource()==menuitem5) {  
			 String s=jta.getText();
			 jta.setText(Helper.commonsDeCodesBase64(s));
		 }
	 }
public static void main(String[] args) {
	try {  
        UIManager.setLookAndFeel("com.jtattoo.plaf.mint.MintLookAndFeel");  
        show s=new show();
    }  
    catch (Exception ex) {  
        ex.printStackTrace();  
    }  
	
}  
   

}


my_filechooser.java

import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
public class my_filechooser {
	 public  static String filechooser(){
	  JFileChooser jfc=new JFileChooser();  
      jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );  
      jfc.showDialog(new JLabel(), "选择"); 
      jfc.setFileFilter(new javax.swing.filechooser.FileFilter() {
    	          public boolean accept(File f) { //设定可用的文件的后缀名
    	              if(f.getName().endsWith(".txt")||f.isDirectory()){
    	                return true;
    	              }
    	              return false;
    	            }
    	            public String getDescription() {
    	              return "以txt结尾";
    	            }
    });	 
      File file=jfc.getSelectedFile();  
      if(file.isDirectory()){  
          System.out.println("文件夹:"+file.getAbsolutePath());  
      }else if(file.isFile()){  
          System.out.println("文件:"+file.getAbsolutePath()); 
      } 
      return file.getAbsolutePath();
     }
	 
}


Helper.java

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
import org.apache.commons.codec.binary.Base64;

import com.hankcs.hanlp.HanLP;

public class Helper {
 public static String Read(String path)throws IOException {
	 BufferedReader br=null;
	 String content="";
	 try{
	 br=new BufferedReader(new FileReader(path));
	 String line=null;
	 while((line=br.readLine())!=null){
     content=content+line; 
	 }
	 }finally{
		 if (br!=null){
			 br.close();
		 }
	 }
	 return content;
 }
 public static String commonsEnCodesBase64(String content){//编码
	 byte[] encodeBytes=Base64.encodeBase64(content.getBytes());
	 return new String(encodeBytes);
 }
 public static String commonsDeCodesBase64(String content){//解码
	 byte[] decodeBytes=Base64.decodeBase64(content.getBytes());
	 return new String(decodeBytes);
 }
 public static String getKeyWord(String s){
	 List<String> keywordList = HanLP.extractKeyword(s,1); 
	 return keywordList.get(0);
 } 
}

提取关键字:

加密:

解密:

一、题目 4 二、摘要 4 三、关键字 4 四、引言 4 五、正文 4 5.1Windows操作系统安全定义 4 5.1.1身份认证(authentication) 5 5.1.2访问控制(authorisation) 6 5.1.3数据保密性(privacy) 7 5.1.4数据完整性(date integrity) 9 5.1.5不可否认性(non-repudiation) 9 5.2Windows金字塔安全架构 9 5.3Windows系统的安全组件 9 5.3.1访问控制的判断(Discretion access control) 10 5.3.2对象重用(Object reuse) 10 5.3.3强制登陆(Mandatory log on) 10 5.3.4审核(Auditing) 10 5.3.5对象的访问控制(Control of access to object) 11 5.4Windows安全子系统的组件 11 5.4.1安全标识符(Security Identifiers) 12 5.4.2访问令牌(Access tokens) 12 5.4.3安全描述符(Security descriptors) 13 5.4.4访问控制列表(Access control lists) 13 5.4.5访问控制项(Access control entries) 13 5.5Windows安全子系统 13 5.6Windows安全子系统流程过程 13 5.6.1 Winlogon and Gina 14 5.6.2本地安全认证(Local Security Authority) 14 5.6.3安全支持提供者的接口(Security Support Provide Interface) 15 5.6.4认证包(Authentication Package) 15 5.6.5安全支持提供者(Security Support Provider) 16 5.6.6网络登陆(Netlogon) 16 5.6.7安全账号管理者(Security Account Manager) 16 5.7Linux安全机制概述 16 5.7.1PAM机制 16 5.7.2入侵检测系统 17 5.7.3加密文件系统 17 5.7.4安全审计 17 5.7.5强制访问控制 18 5.7.6防火墙 18 5.8WindowsXP下的一些常用安全设置 19 5.8.1WindowsXP系统安全补丁升级 19 5.8.2WindowsXP管理防火墙的例外程序 20 5.8.3WindowsXP端口安全设置 20 5.8.4WindowsXP下Internet安全设置 22 六、结论 22 七、参考文献 23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值