精华内容
下载资源
问答
  • packagecom.doit.generate;publicclassGenerate{privateStringsupplementZero(StringbinaryStr){intlen=128-binaryStr.length();for(intm=0;mpackage ...public class Generate{private String suppl...

    packagecom.doit.generate;publicclassGenerate{privateStringsupplementZero(StringbinaryStr){intlen=128-binaryStr.length();for(intm=0;m

    package com.doit.generate;

    public class Generate{

    private String supplementZero(String binaryStr) {

    int len = 128 - binaryStr.length();

    for (int m = 0; m < len; m++) {

    binaryStr = "0" + binaryStr;

    }

    return binaryStr;

    }

    private byte[] encrypt(String srcStr) {

    char[] srcChar = srcStr.toCharArray();

    String result = "";

    for (int i = 0; i < srcChar.length; i++) {

    char c = (char) (((byte) srcChar[i]) >>> 2);

    c = (char) (c ^ Integer.MAX_VALUE);

    c = (char) (((byte) c) << 3);

    c = (char) (c ^ Integer.MIN_VALUE);

    c = (char) (((byte) c) >>> 1);

    c = (char) (c ^ 1025);

    c = (char) (~c);

    c = (char) (c ^ Integer.MAX_VALUE);

    result += supplementZero(Long.toBinaryString(srcChar[i]));

    }

    return result.getBytes();

    }

    }

    展开

    展开全文
  • // 加密解密只要offset一致即可 public static final int offset = Integer.MIN_VALUE + 10086; // 加密 public static String encryption(String s) { StringBuilder sb = new StringBuilder(); ...
    import java.util.Base64;
    
    public class Encryption {
    	
    	// 加密和解密只要offset一致即可
    	public static final int offset = Integer.MIN_VALUE + 10086;
    	
    	// 加密
    	public static String encryption(String s) {
    		
    		StringBuilder sb = new StringBuilder();
    		
    		for (int i = 0; i < s.length(); i++) {
    			sb.append("" + (char)(((int)s.charAt(i)) + offset));
    		}
    		
    		return new StringBuilder(Base64.getEncoder().encodeToString(new String(sb.toString()).getBytes())).reverse().toString();
    	}
    	
    	// 解密
    	public static String decryption(String s) {
    		
    		s = new String(Base64.getDecoder().decode(new StringBuilder(s).reverse().toString()));
    		
    		StringBuilder sb = new StringBuilder();
    		
    		for (int i = 0; i < s.length(); i++) {
    			sb.append((char)(((int)s.charAt(i)) - offset));
    		}
    		
    		return sb.toString();
    	}
    
    	public static void main(String[] args) {
    		String str = "加密字符串";
            // 使用的时候可嵌套多层,嵌套越多密文越长
    		System.out.println(encryption(encryption(str)));
    		System.out.println(decryption(decryption(encryption(encryption(str)))));
    	}
    }
    

     

    展开全文
  • 自定义加密解密类加载器 测试简单的class文件加密解密(取反操作)。取反加密只是一个简单示例。 加密工具类(字节按位取反) package com.feng.ClassTest; import java.io.File; import java.io....

    如果想看一下简单的类加载器怎么自定义,可以跳转简单自定义类加载器

    自定义加密解密类加载器
    测试简单的class文件加密解密(取反操作)。取反加密只是一个简单示例。

    加密工具类(字节按位取反)

    package com.feng.ClassTest;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    /**
     * 加密工具类
     * @author feng
     *
     */
    
    public class EncrpUtil {
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		encrpt("E:\\myjava\\HelloWorld.class", "E:\\myjava\\temp\\HelloWorld.class");
    	}
    	
    	public static void encrpt(String src, String dest) {
    		
    		FileInputStream fis = null;
    		FileOutputStream fos = null;
    		
    		try {
    			fis = new FileInputStream(src);
    			fos = new FileOutputStream(dest);
    			
    			int temp = -1;
    			while((temp = fis.read()) != -1) {
    				fos.write(temp^0xff);	//异或,每个字节按位取反
    			}
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			
    			try {
    				if(fis != null) {
    					fis.close();
    				}
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			
    			try {
    				if(fos != null) {
    					fos.close();
    				}
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			
    		}
    	}
    }
    
    

    解密类加载器

    package com.feng.ClassTest;
    
    import java.io.ByteArrayOutputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    /**
     * 加载文件系统加密后的class字节码的类加载器
     * @author feng
     *
     */
    
    public class DecreptClassLoader extends ClassLoader {
    	
    	private String rootDir;
    	
    	public DecreptClassLoader(String rootDir) {
    		this.rootDir = rootDir;
    	}
    	
    	@Override
    	protected Class<?> findClass(String name) throws ClassNotFoundException {
    		
    		Class<?> c = null;
    		
    		byte[] classData = getClassData(name);	// 自定义方法获取类字节码
    		if(classData == null) {
    			throw new ClassNotFoundException();	// 如果字节数组为空,抛出异常
    		} else {
    			try {
    				c = defineClass(name, classData, 0, classData.length);
    			} catch (ClassFormatError e){	// 加载错误
    				e.printStackTrace();
    				c = null;
    			}
    
    		}
    		
    		return c;
    		
    	}
    	
    	private byte[] getClassData(String classname) {
    		// 拼出类class文件地址
    		String path = rootDir + "/" + classname.replace('.', '/') + ".class";
    		
    		InputStream fis = null;
    		ByteArrayOutputStream baos = new ByteArrayOutputStream();
    		try {
    			fis = new FileInputStream(path);
    			
    			int temp = -1;
    			while((temp = fis.read()) != -1) {
    				baos.write(temp^0xff);	//异或,每个字节按位取反
    			}
    			
    			return baos.toByteArray();
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			
    			return null;
    		} finally {
    			
    			try {
    				if(fis != null) {
    					fis.close();
    				}
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			
    			try {
    				if(baos != null) {
    					baos.close();
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    			
    		}
    		
    	}
    	
    }
    
    

    测试自定义解密类加载器

    package com.feng.ClassTest;
    
    public class Demo04 {
    	
    	public static void main(String[] args) throws ClassNotFoundException {
    
    		//加密后的class文件,正常的类加载器 无法加载,会报FormatError错误
    		//FileSystemClassLoader loader = new FileSystemClassLoader("E:\\myjava\\temp");
    		//Class<?> c = loader.findClass("HelloWorld");
    		//System.out.println(c);
    		
    		// 使用解密类加载器
    		DecreptClassLoader loader = new DecreptClassLoader("E:\\myjava\\temp");
    		Class<?> c = loader.loadClass("HelloWorld");
    		System.out.println(c);
    		
    	}
    
    }
    
    展开全文
  • 简单自定义 字节加1 package game01; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.nio.channels....

    简单自定义 字节加1 有用记得点个赞

    package game01;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.nio.channels.FileChannel;
    import java.util.Scanner;
    
    public class Tool {
    	public static FileInputStream fis =null;
    	public static FileOutputStream fos =null;
    	public static long start;//计时
    	public static long end; 
    	public static String jiamilj = null;
    	public static String jiemilj = null;
    	public static FileChannel fc = null;//文件大小
    	
    	
    	public static void main(String []args) throws IOException{
    		
    		Scanner in = new Scanner(System.in);
    		System.out.println("你要加密还是解密:");
    		String input = in.next();
    		
    		if(input.equals("加密")){
    			
    			Scanner in01 = new Scanner(System.in);
    			System.out.println("你要加密的文件路径:(E:\\a.txt):");
    			String input01 = in01.next();
    			System.out.println(input01);
    			
    			jiami(input01);
    			System.out.println("加密成功,加密路径:"+jiamilj);
    			System.out.println("加密用时"+(end-start)+"毫秒");
    			size(1);
    			System.out.println("文件大小"+fc.size()+"Byte");
    			fis.close();
    			fos.close();
    		}else{
    			Scanner in02 = new Scanner(System.in);
    			System.out.println("你要解密的文件路径:(E:\\b.txt):");
    			String input02 = in.next();
    			jiemi(input02);
    			System.out.println("解密成功,解密路径为:"+jiemilj);
    			System.out.println("解密密用时"+(end-start)+"毫秒");
    			size(2);
    			System.out.println("文件大小"+fc.size()+"Byte");
    			fis.close();
    			fos.close();
    		}	
    		
    		
    	}
    	
    	
    	//加密
    	public static void jiami(String input02) throws IOException{
    		start = System.currentTimeMillis();
    		in01(input02);
    		end = System.currentTimeMillis();
    	}
    	//解密
    	public static void jiemi(String input02) throws IOException{
    		start = System.currentTimeMillis();
    		in02(input02);
    		end = System.currentTimeMillis();
    	}
    	
    	
    	//配套加密
    	public static void in01(String input03) throws IOException{
    		 fis = new FileInputStream(input03);		
    		int i;  //核心代码  
    		while((i=fis.read())!=-1){			
    			out01(i);
    		}
    		
    	}	
    	public static void out01(int i) throws IOException{
    		 fos = new FileOutputStream("E:\\b.txt",true);
    		fos.write(i+1);	
    		jiamilj = "E:\\b.txt";
    	}
    	
    	
    	//配套解密
    	public static void in02(String input03) throws IOException{
    		fis = new FileInputStream(input03);		
    		int i;  //核心代码  
    		while((i=fis.read())!=-1){
    			out02(i);
    		}	
    	}
    	public static void out02(int i) throws IOException{
    		 fos = new FileOutputStream("E:\\c.txt",true);
    		fos.write(i-1);	
    		jiemilj = "E:\\c.txt";
    	}
    	
    	//求文件大小
    	public static void size(int s) throws FileNotFoundException{
    		if(s==1){
    			FileInputStream fis01 = new FileInputStream("E:\\b.txt");
    			fc = fis01.getChannel();
    		}else{
    			FileInputStream fis01 = new FileInputStream("E:\\c.txt");
    			fc = fis01.getChannel();
    		}
    		
    	}
    
    }
    
    展开全文
  • 包括java自定义加密解密实例,异或加密解密实例,AES加密解密,DES加密解密 对文件加密建议使用DES方式 技术学习交流:635278789
  • 在实际项目中,我们经常需要对数据进行加密,保障数据不被解密,我们可以写一个简单的加密方式进行可逆加密加密的核心在于将16进制进行重新对应,比如说加密时将0改为3,反过来解密时将3改为0. import java....
  • } /** * 对使用AES加密算法的密文进行解密 * @param res 需要解密的密文 * @param key 秘钥 * @return */ public static String AESdecode(String res, String key) { return keyGeneratorES(res, AES, key, ...
  • 类加载器原理 将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class对象,作为...4、自定义类加载器(Java编写) 来测试一下ClassL...
  • 自定义classloader加密java程序

    千次阅读 2013-12-05 12:45:21
    1. 生成密钥用于在des算法中加密。  2. classloader类中动态的解密class,并且通过反射机制执行main方法。  3. 对classloader类进行高质量的混淆。  首先需要生成des算法中的key:  Java代码  import ...
  • java字符串加密解密try {String test = "123456789@fdj.com";EncryptionDecryption des = new EncryptionDecryption("tourhb");// 自定义密钥System.out.println("加密前的字符:" + test);System.out.println("加密...
  • import java.io.UnsupportedEncodingException; public class Base64 {  private static char[] base64EncodeChars = new char[]{  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',  'I', 'J', 'K', 'L',...
  • 下面是自定义的CLASSLOADER在JAVA加密解密方面的一些研究。JAVA安全 JAVA是解释执行的语言,对于不同的操作平台都有相应的JVM对字节码文件进行解释执行。而这个字节码文件,也就是我们平时所看到的每一个.class文件...
  • 使用jfinalQ-encrypt开源软件。对项目的class文件加密,防止反编译,可自定义加密解密算法,支持tomcat部署。
  • JAVA加密解密---自定义类加载器应用 Posted on 2007-04-22 11:09 久城 阅读(2683) 评论(5) 编辑 收藏 所属分类: Java理解笔记 最近在研究JAVA CLASS LOADING技术,已实现了一个自定义的加载器。对目前自定义加载...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 240
精华内容 96
关键字:

自定义加密解密java

java 订阅