`

数据的加密与解码

阅读更多

想要坑别人吗?想要创造一个只有自己能看懂的文件吗?

来看看吧!

//实现方法

(1)先定义要实现的类,我先定义了一个抽象类

 

//图形类
abstract class  Shape{
	 int x,y;
	 int x1,y1;
	Color color ;
	Graphics g ;
	byte type ;
	public abstract void draw(Graphics g) ;
	
}
//直线类
 class LineShape extends Shape{
    
    public LineShape(int x, int y ,int x1,int y1,Color color){
    	this.x = x ;
    	this.y = y ;
    	this.x1 = x1 ;
    	this.y1 = y1 ;
    	this.color = color ;
    	this.type = 0;
    }
  
	@Override
	public void draw(Graphics g) {
		g.setColor(color) ;
		g.drawLine(x, y, x1, y1) ;
		
	}
	 
 }
//圆类
class OvalShape extends Shape{
	
  public OvalShape(int x,int y, int x1,int y1,Color color){
    	this.x = x ;
     	this.y = y ;
     	this.x1 = x1 ;
     	this.y1 = y1 ;
     	this.color = color ;
     	this.type = 1;
     }
	@Override
	public void draw(Graphics g) {
		
		g.setColor(color) ;
		g.drawOval((x+x1)/2,(y+y1)/2,(x1-x)/2 ,(y1-y)/2 );
	}
	 
 }
//图片类
 class picture extends Shape{
	 int a ;
	 int b ;
	 int cl[][] ;
	 public picture(int a,int b,int cl[][]){
		 this.type =2 ;
		 this.a =a ;
		 this.b =b ;
		 this.cl =cl ;
		
	 }
	 public void draw(Graphics g){
		 for(int k=0;k<a;k++){
			  for(int j=0;j<b;j++){
				  
				Color c   =  new Color(cl[k][j]) ;
				g.setColor(c);
				g.drawLine(k+100,j+100,k+100,j+100);
			  }
		  } 
	 }
 }


		  

 

(2)总方法类

 

public class BmpSaveStart {

	Graphics g ;
	public static void main(String[] args) {
		 new BmpSaveStart() .UI();

	}
	public void UI(){
		JFrame jf = new JFrame();
		jf.setSize(600,600);
		
		jf.setTitle("图片的存储");
		jf.setBackground(Color.WHITE );
		JMenuBar bar = new JMenuBar() ;
		JMenu menu1 = new JMenu("选项") ;
		JMenuItem m1 = new JMenuItem("画圆");
		JMenuItem m2 = new JMenuItem("画线");
		JMenuItem m3 = new JMenuItem("存储");
		JMenuItem m4 = new JMenuItem("打开");
		JMenuItem m5 = new JMenuItem("图片");
		menu1.add(m1) ;
		menu1.add(m2) ;
		menu1.add(m3) ;
		menu1.add(m4) ;
		menu1.add(m5) ;
		bar.add(menu1);
		jf.setJMenuBar(bar);
		
		jf.setDefaultCloseOperation(3);
		jf.setVisible(true) ;
		PaintDemo p =	new PaintDemo(g,jf) ;
		
		m1.setActionCommand("画圆");
		m2.setActionCommand("画线");
		m3.setActionCommand("存储");
		m4.setActionCommand("打开");
		m5.setActionCommand("图片") ;
		
		m1.addActionListener(p);
		m2.addActionListener(p);
		m3.addActionListener(p);
		m4.addActionListener(p);
		m5.addActionListener(p);
	}
  
}

 (3)监听类

 

class PaintDemo implements MouseListener,ActionListener{
ImageIcon img = new ImageIcon("Images/100.gif");
BufferedImage bufImage = new BufferedImage(img.getIconWidth(),img.getIconHeight(),BufferedImage.TYPE_INT_RGB);

 int x,y;
 int x1,y1;
 JFrame jf ;
 Graphics g ;
 String str ;
 Color c ;
 int cr ;
 int cl[][] = new int[1000][1000] ;
 

ArrayList<Shape> shapes = new ArrayList<Shape>() ;
 Random random =new Random() ;
 int R ;
 int G ;
 int B ;
 public PaintDemo( Graphics g ,JFrame jf){
	 this.jf = jf;
	 this.g = jf.getGraphics();
 }
	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mousePressed(MouseEvent e) {
           x=e.getX();
           y=e.getY();
          
		
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		  x1 = e.getX();
		  y1 = e.getY();
		  setColor() ;
		  if(str.equals("画圆")){
			 // paintOval();
			  
				Shape shape = new OvalShape(x, y, x1, y1,c) ;
				shape.draw(g);
				shapes.add(shape) ;
			}
			if(str.equals("画线")){
				//paintLine();
				
				Shape shape = new LineShape(x, y, x1, y1,c) ;
				shape.draw(g);
				shapes.add(shape) ;
				/*File  f =new File("D:\\test.txt") ;
				if(f==null){
					try {
						f.createNewFile();
					} catch (Exception e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}*/
			}
			
				
				
			}
public void saveFile(String path,ArrayList<Shape> shapes){
	try{
		//文件输出流
		FileOutputStream fos = new FileOutputStream(path) ;
		//将文件输出流包装成可写基本类型的流
		DataOutputStream dos = new DataOutputStream(fos) ;
		dos.writeInt(shapes.size());//写入队列中图形的个数
		//读取队列
		for(int i=0;i<shapes.size();i++){
			//取出一种形状
			Shape shape = shapes.get(i);
			byte type = shape.type ;
			
			
			if(type==0){//根据type判断类型,如果是直线
				System.out.println("开始存储直线") ;
				dos.writeByte(type);
				LineShape line = (LineShape) shape ;//强制转换为直线类
				//写直线形状的数据;
				int x = line.x ;
				int y = line.y ;
				int x1 = line.x1 ;
				int y1 = line.y1 ;
				Color color = line.color ;
				cr = color.getRGB();
				dos.writeInt(x);
				dos.writeInt(y);
				dos.writeInt(x1);
				dos.writeInt(y1);
				dos.writeInt(cr);
			}else if(type == 1){
				dos.writeByte(type);
				System.out.println("开始存储圆") ;
				OvalShape oval = (OvalShape) shape ;//强制转换为圆类
				//写直线形状的数据;
				int x = oval.x ;
				int y = oval.y ;
				int x1 = oval.x1 ;
				int y1 = oval.y1 ;
				Color color = oval.color ;
				cr = color.getRGB() ;
				dos.writeInt(x);
				dos.writeInt(y);
				dos.writeInt(x1);
				dos.writeInt(y1);
				dos.writeInt(cr);
			}else if(type ==2){
				
				dos.writeByte(type) ;
				picture pl = (picture) shape ;
				System.out.println("开始存储图片") ;
				int width = pl.a ;
				int height = pl.b ;
				dos.writeInt(width) ;
				dos.writeInt(height) ;
				for(int k=0;k<width;k++){
					for(int j=0;j<height;j++){
						int t = pl.cl[k][j];
						dos.writeInt(t) ;
					}
				}
				
			}
			}
		dos.flush() ;
		fos.close();
	}catch(Exception e){
		e.printStackTrace();
	}
}
public ArrayList<Shape> readFile(String path){
	
	try{
		//创建文件对象的输入流
		FileInputStream fis = new FileInputStream(path);
		//将文件输入流包装成可读基本类型的流
		DataInputStream dis = new DataInputStream(fis);
		//先读取文件长度,即总共的形状个数
		int len = dis.readInt() ;
		for(int i=0 ;i<len;i++){
			byte  type = dis.readByte();
			if(type==0){
			int a=	dis.readInt();
			int b=	dis.readInt();
			int c=	dis.readInt();
			int d=	dis.readInt();
			Color f= new Color(dis.readInt());
			LineShape line = new LineShape(a,b,c,d,f);
			//读取直线的设置
				
			//将直线存入队列
			shapes.add(line) ;
			}else if(type == 1){
				
				int a=	dis.readInt();
				int b=	dis.readInt();
				int c=	dis.readInt();
				int d=	dis.readInt();
				Color f= new Color(dis.readInt());
				System.out.println("开始读取圆") ;
				OvalShape oval = new OvalShape(a,b,c,d,f);
				shapes.add(oval) ;
		      }else if(type == 2){
		    	
		    	int   a=	dis.readInt();
				int    b=	dis.readInt();
				
				  for(int k=0;k<a;k++){
					  for(int j=0;j<b;j++){
						  
					 cl[k] [j] = dis.readInt();
						
					  }
				  }
				  picture   pic = new picture(a,b,cl) ;
		    	  shapes.add(pic) ;
		      }
		    	  
		      
	}}catch(Exception e){
		e.printStackTrace();
	}
	return shapes ;
}
	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	public void setColor(){
		  R =random.nextInt(255);
    	  G =random.nextInt(255);
    	  B =random.nextInt(255);
    	  c=new Color(R,G,B) ;
	}
   /* public void paintLine(){
    	setColor();
		  g.drawLine(x, y, x1, y1) ;
    }
    public void paintOval(){
    	setColor();
    	g.drawOval((x+x1)/2,(y+y1)/2,(x1-x)/2 ,(y1-y)/2 );
    }
    */
    @Override
	public void actionPerformed(ActionEvent e) {
    	str = e.getActionCommand() ;
    	jf.addMouseListener(this);
    	if(str.equals("存储")){
			
			saveFile("D:\\test.txt",shapes) ;
			
		}
		if(str.equals("打开")){
			
			readFile("D:\\test.txt") ;
			for(int i=0;i<shapes.size();i++){
				
				Shape shape = shapes.get(i);
				if(shape.type ==0){
					System.out.println("确定是圆类型");
					LineShape line = (LineShape)shape ;
					line.draw(g);
				}else if(shape.type==1){
					System.out.println("确定是圆类型");
					OvalShape  oval = (OvalShape)shape ;
					oval.draw(g);
				}else if(shape.type ==2){
					System.out.println("确定是图片类型");
					picture pl = (picture)shape ;
					pl.draw(g) ;
					
 				}
				
				
			}
		}
        if(str.equals("图片")){
         
        Thread th = new Thread(new Runnable(){
        	;
        	public void run(){
        		while(true){
        			try{
        				Thread.sleep(30) ;
        	
        	   Graphics g1 = bufImage.getGraphics();
        	  
        	   g1.drawImage(img.getImage(), 0,0,null);
       	     jf.getGraphics().drawImage(bufImage,100,100,null) ;
              int width = bufImage.getWidth();
		       int height = bufImage.getHeight() ;
		   for(int k=0;k<width;k++){
				for(int j=0;j<height;j++){
					int p =bufImage.getRGB(k,j) ;
					cl[k][j] = p ;
				         }
			              }
       	      picture pe =new picture(width,height,cl);
       	      shapes.add(pe);
        	
                
        			   }catch(Exception e){
        				e.printStackTrace();
        		         }
        	}
        }});
        th.start();
        }
      
    }
    
	
}
 

   

分享到:
评论

相关推荐

    c#中数据加密和解密

    在C#编程中,数据加密和解密是确保信息安全的重要手段。通过加密,可以保护敏感信息免受未经授权的访问和篡改。本实例探讨了如何使用C#来实现数据加密,特别是针对文件中的机密数据。 首先,我们要了解C#中用于数据...

    行业分类-设备装置-密钥信息的生成、内容信息的加密与解码、记录媒体与传输方法.zip

    本资料包"行业分类-设备装置-密钥信息的生成、内容信息的加密与解码、记录媒体与传输方法.zip"专注于探讨这三个核心领域,旨在提供一套全面的安全策略。 首先,我们来看密钥信息的生成。密钥是加密技术的基础,它...

    433解码.rar_433_433如何加密_433模块_433码值_433解码

    2. **433MHz编码与解码**:无线通信涉及将数据编码为无线电波,然后在接收端解码回原始数据。433MHz模块的解码通常涉及到识别信号的脉冲宽度、频率和时序,以恢复信息。描述中提到的"433解码程序"可能是一个C语言...

    huffman的加密和解码

    3. **数据加密**:将原始文本中的每个字符替换为其对应的哈弗曼编码,得到压缩后的数据。如果字符集不是二进制安全的,可以先进行转义处理。 4. **数据解码**:为了正确解码,我们需要保留哈弗曼树的信息。通常,...

    Java RSA数据加密组件包

    Java RSA数据加密组件包是一个基于Java平台的加密工具,它主要利用了RSA(Rivest–Shamir–Adleman)非对称加密算法。RSA是一种广泛应用于网络安全的公钥加密技术,由三位数学家Ron Rivest、Adi Shamir和Leonard ...

    数据加密技术及用VB6.0实现数据加密算法 PDF

    数据加密技术是保护信息安全的关键手段,它通过特定的算法将原始信息转化为无法识别的密文,确保信息在传输过程中的安全。VB6.0是一种古老的编程环境,它也可以用来实现数据加密算法,使得开发者能够在应用程序中...

    PHP加密文件解码工具,98%成功解密

    然而,值得注意的是,虽然解码工具可能有98%的成功率,但这并不意味着所有加密的文件都能被成功解密,因为加密技术的复杂性和不断更新,以及可能的多层加密策略。 PHP加密文件解码工具的工作原理通常涉及逆向工程,...

    Sqlite3加密编解码器允许使用Botan支持的算法对数据库进行完整加密。.zip

    通过集成Botan,SQLite3加密编解码器可以利用这些先进的加密技术,确保数据在存储和传输过程中的安全性。 这个压缩包文件“botansqlite3-master”很可能包含了该项目的源代码,供开发者编译和使用。通常,这样的...

    银联8583 mac,位图,明文,加密,解码 计算工具

    综上所述,这款工具涵盖了银联8583报文处理的核心环节,包括报文结构解析、安全校验、数据加密和解密等。对于从事银联接口开发或者需要处理8583报文的人员来说,它能极大地提升工作效率和交易安全性。

    C++语言编写的数据加密解密程序

    在信息技术领域,数据安全至关重要,而数据加密与解密是保障信息安全的核心技术之一。C++作为一种强大的面向对象的编程语言,提供了丰富的库函数和高级特性,可以用来编写高效且灵活的加密算法。本项目是一个基于C++...

    Delphi【HMC-SHA签名、SHA加密、MD5加密、URL编码与解码、Base64编码与解码】

    本篇将详细讲解Delphi中涉及到的HMAC-SHA签名、SHA加密、MD5加密、URL编码与解码以及Base64编码与解码的相关知识。 首先,HMAC-SHA(Hash-based Message Authentication Code - Secure Hash Algorithm)是一种基于...

    java使用Hex编码解码实现Aes加密解密功能示例

    总结来说,这个Java示例展示了如何使用Hex编码和解码配合AES加密算法进行数据安全保护。在实际应用中,为了提高安全性,通常会采用更复杂的加密模式(如CBC或CFB),并使用随机生成的密钥,而不是固定或硬编码的密钥...

    android数据传输RSA加密DEMO

    客户端收到公钥后,可以使用`javax.crypto.Cipher`类进行数据加密。首先,通过Base64解码恢复公钥,然后初始化Cipher实例,设置为加密模式,使用公钥作为参数。最后,使用`Cipher#doFinal()`方法对数据进行加密。 ...

    密码管理(数据加密)

    密码管理与数据加密是保障个人信息安全的关键环节,尤其在当今数字化时代,个人隐私和敏感信息的保护至关重要。本文将深入探讨这两个概念,并提供实用的建议。 首先,密码管理是通过集中化的方式,帮助用户妥善存储...

    批处理大全 bat 传exe 加密bat 解码

    本压缩包文件“批处理大全 bat 传exe 加密bat 解码”包含了关于dos批处理、exe生成以及加密解密的相关工具和资源,这些都是系统管理和自动化操作的重要组成部分。 首先,让我们深入了解一下**dos批处理**。DOS...

    能实现解码操作的加密程序

    加密是将明文数据转化为无法轻易理解的密文,以保护数据的安全性。解码则是加密的逆过程,将密文恢复为原始的明文信息。在这个C++程序中,用户需要输入一个密码,这个密码被用作加密和解码的关键。 C++是一种通用的...

    cocos2dx 用户数据加密

    在Cocos2d-x开发中,用户数据加密是保护应用程序数据安全的重要环节。Cocos2d-x是一个跨平台的游戏开发框架,它允许开发者用C++编写代码,然后在多个操作系统上运行,包括iOS、Android、Windows等。由于游戏通常会...

    php接口数据加密、解密、验证签名

    需要注意的是,AES用于数据加密,速度快但密钥管理复杂,而RSA用于公钥加密和签名,安全性高但计算量大。在实际应用中,通常结合两者使用:AES用于加密大量数据,RSA用于加密AES的密钥,确保密钥的安全传输。 此外...

    Base64文本字符串编码解码加密解密双向解析工具

    如果需要加密,可以结合其他加密算法(如AES、RSA等)与Base64一起使用,先加密数据,再进行Base64编码,这样即使数据被Base64解码,也仍然无法理解其内容,除非先解密。 提供的压缩包文件可能包含一个或多个工具,...

Global site tag (gtag.js) - Google Analytics