凯撒密码--简单的加密与解密

凯撒密码–简单的加密与解密

public class MyEncrypt {

    private static final int KEY = 3;

    public enum EncryptState {
        ENCRYPT,    //表示加密操作
         DECRYPT    //表示解密操作
    }

    public static void main(String[] args) {

        String input = "wo men dou shi cheng xu yuan";

        System.out.println(input);

        String result = myEncrypt(input, KEY, EncryptState.ENCRYPT);

        System.out.println(result);

        result = myEncrypt(result, KEY, EncryptState.DECRYPT);

        System.out.println(result);


        File input = new File("C:\\Users\\zhang\\Desktop\\code",
                "yuanwenjian.txt");
        if (input == null) {
            input.mkdirs();
        }

        File encrypt = new File("C:\\Users\\zhang\\Desktop\\code",
                "encrypt.txt");

        if (encrypt == null) {
            encrypt.mkdirs();
        }

        myEncrypt(input, encrypt, KEY, EncryptState.ENCRYPT);

        File decrypt = new File("C:\\Users\\zhang\\Desktop\\code",
                "decrypt.txt");

        if (decrypt == null) {
            decrypt.mkdirs();
        }

        myEncrypt(encrypt, decrypt, KEY, EncryptState.DECRYPT);



    }

    private static String myEncrypt(String input, int key, EncryptState encrypt) {
        // 将字符串转为字符数组
        char[] chars = input.toCharArray();

        // 遍历数组,在每个元素的基础上加key值

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

            if (encrypt == EncryptState.ENCRYPT) {
                chars[i] += key;
            } else if (encrypt == EncryptState.DECRYPT) {
                chars[i] -= key;
            }

        }

        return new String(chars);

    }

/**
     * 加密或解密文件
     * 
     * @param input
     * @param output
     * @param key
     * @throws IOException
     */
    private static void myEncrypt(File input, File output, int key,
            EncryptState encrypt) throws IOException {

        BufferedReader br = new BufferedReader(new FileReader(input));

        BufferedWriter bw = new BufferedWriter(new FileWriter(output));

        String temp = "";
        while ((temp = br.readLine()) != null) {
            char[] array = temp.toCharArray();

            for (int i = 0; i < array.length; i++) {
                if (encrypt == EncryptState.ENCRYPT) {
                    array[i] += key;
                } else if (encrypt == EncryptState.DECRYPT) {
                    array[i] -= key;
                }
            }

            String result = new String(array);

            System.out.println(result);

            bw.write(result);
        }
        bw.close();
        br.close();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值