FlashFXP密码java加密解密算法

来源:互联网 发布:js导出csv文件 编辑:程序博客网 时间:2024/05/14 19:00
import java.io.FileReader;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;public class fxp {    private static final char[] FlashFXP_Key = "yA36zA48dEhfrvghGRg57h5UlDv3".toCharArray();    public static void main(String[] args) {        String dec = "68A090F010393156BE8AFE58ED";//密文    String enc = "q13537100***";//明文        System.out.println("明文:" + enc);        System.out.println("密文:" + encode(enc));        System.out.println("解密:" + decode(dec));                /*        if (args.length == 0) {        System.out.println("Usage:decodeFlashFXP [filename of FlashFXP's Sites.dat]");        System.out.println("");        System.out.println("Press Enter to exit...");        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));            try {                br.readLine();            } catch (IOException e) {                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.            }            return;        }        String filename = args[0];        FileReader fr = null;        try {            fr = new FileReader(filename);            BufferedReader br = new BufferedReader(fr);            String s = "";            while ((s = br.readLine()) != null) {                if (s.startsWith("Pass=")) {                    String input = s.substring(s.indexOf("=") + 1, s.length());                    System.err.println("/"+input+"/");                    System.out.println("Pass=" + decode(input));                } else                    System.out.println(s);            }        } catch (Exception e) {            e.printStackTrace();            System.out.println("error when open the file:" + filename);            return;        }        */    }    public static String decode(String input) {        if (input.equals("")||input==null) return "";        StringBuffer result = new StringBuffer();        char[] inputArr = input.toCharArray();        for (int i = 0; i < inputArr.length - 2; i = i + 2) {            String source = "" + inputArr[i + 2] + inputArr[i + 3];            String key = "" + Integer.toHexString((byte) (FlashFXP_Key[i / 2 % 28]));            String magic_number = "" + inputArr[i] + inputArr[i + 1];            int chr = (Integer.parseInt(source, 16) ^ Integer.parseInt(key, 16)) - Integer.parseInt(magic_number, 16);            if (chr < 0) {                chr = chr + 255;            }            result.append((char) chr);        }        return result.toString();    }    public static String encode(String input) {        if (input.equals("") || input==null) return "";        char[] inputArr = input.toCharArray();        int key = (int)(Math.random() * 200)+1;        //int key=0x01;        StringBuffer result = null;        if (key > 0x0F)            result = new StringBuffer("" + Integer.toHexString(key));        else            result = new StringBuffer("0" + Integer.toHexString(key));        int magic_number = Integer.parseInt(result.toString(), 16);        for (int i = 0; i < inputArr.length; i++) {            if (inputArr[i] + magic_number > 0xFF)                magic_number = (inputArr[i] + magic_number - 0xFF) ^ FlashFXP_Key[i % 28];            else                magic_number = (inputArr[i] + magic_number) ^ FlashFXP_Key[i % 28];            if (magic_number > 0x0F)                result.append(Integer.toHexString(magic_number));            else                result.append("0" + Integer.toHexString(magic_number));        }        return result.toString().toUpperCase();    }}
原作者已经找不到了,漫天的互联网被转载的没头绪了,在这里感谢原作者。

原创粉丝点击