-
java 自定义加密_java自定义加密解密算法,该种加密如何解?
2021-02-12 18:50:36packagecom.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();
}
}
展开
-
JAVA自定义加密解密方法
2020-12-08 09:52:57// 加密和解密只要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))))); } }
-
Java类加载器 自定义加密解密
2019-07-27 19:21:18自定义加密解密类加载器 测试简单的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); } }
-
java 自定义加密和解密文件
2020-11-22 11:57:41简单自定义 字节加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)
2018-01-10 11:45:05包括java自定义加密解密实例,异或加密解密实例,AES加密解密,DES加密解密 对文件加密建议使用DES方式 技术学习交流:635278789 -
java字符串加密——自定义加解密
2021-02-01 17:10:11在实际项目中,我们经常需要对数据进行加密,保障数据不被解密,我们可以写一个简单的加密方式进行可逆加密。 加密的核心在于将16进制进行重新对应,比如说加密时将0改为3,反过来解密时将3改为0. import java.... -
Java加密解密工具类(使用自定义密文进行加密解密运算)记录
2020-05-08 15:54:01} /** * 对使用AES加密算法的密文进行解密 * @param res 需要解密的密文 * @param key 秘钥 * @return */ public static String AESdecode(String res, String key) { return keyGeneratorES(res, AES, key, ... -
【Java类加载机制】深入类加载器(二)自定义加密、解密类加载器
2019-08-06 20:20:42类加载器原理 将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class对象,作为...4、自定义类加载器(Java编写) 来测试一下ClassL... -
自定义classloader加密java程序
2013-12-05 12:45:211. 生成密钥用于在des算法中加密。 2. classloader类中动态的解密class,并且通过反射机制执行main方法。 3. 对classloader类进行高质量的混淆。 首先需要生成des算法中的key: Java代码 import ... -
java 字符串加密 解密_java字符串加密解密
2021-02-28 14:14:36java字符串加密解密try {String test = "123456789@fdj.com";EncryptionDecryption des = new EncryptionDecryption("tourhb");// 自定义密钥System.out.println("加密前的字符:" + test);System.out.println("加密... -
java 加密算法 base64 以及 自定义 加解密
2016-07-10 16:16:29import java.io.UnsupportedEncodingException; public class Base64 { private static char[] base64EncodeChars = new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',... -
JAVA加密解密---自定义类加载器应用
2019-08-04 05:58:47下面是自定义的CLASSLOADER在JAVA加密解密方面的一些研究。JAVA安全 JAVA是解释执行的语言,对于不同的操作平台都有相应的JVM对字节码文件进行解释执行。而这个字节码文件,也就是我们平时所看到的每一个.class文件... -
Java加密部署,使用自定义的classloader解密的方法实例
2017-09-20 20:41:05使用jfinalQ-encrypt开源软件。对项目的class文件加密,防止反编译,可自定义加密解密算法,支持tomcat部署。 -
JAVA加密解密---自定义类加载器应用
2010-07-24 19:49:04JAVA加密解密---自定义类加载器应用 Posted on 2007-04-22 11:09 久城 阅读(2683) 评论(5) 编辑 收藏 所属分类: Java理解笔记 最近在研究JAVA CLASS LOADING技术,已实现了一个自定义的加载器。对目前自定义加载...
-
实现 MySQL 读写分离的利器 mysql-proxy
-
【图像识别】基于模板匹配车牌识别matlab源码含GUI
-
2010年江西财经大学《计算机基础》期末考试试卷(含答案).pdf
-
[力扣c语言实现]647. 回文子串
-
nginx-1.18.0官网安装包
-
vue3从0到1-超详细
-
基于django的电商推荐系统.zip
-
SAE J1939 中英文版及相关论文.zip
-
网站软件Dreamweaver8.rar.rar
-
Oracle_11g_Linux到Linux_DataGuard部署
-
recycleView实现item重叠水平滑动
-
2021-03-02
-
朱老师鸿蒙系列课程第1期-2鸿蒙系统Harmonyos源码架构分析
-
网页制作期末大作业.zip
-
解决Gradle Connect to 127.0.0.1:1080 [/127.0.0.1] failed: Connection refused: connect
-
Java 面试题 101 - 110
-
PPT大神之路高清教程
-
单目标遗传算法的实现python
-
MySQL 事务和锁
-
Windows系统管理