• 异或加密法 在对文本进行简单加密的时候,可以选择用一个n位的二进制数,对原文进行异或运算。 解密的方法就是再执行一次同样的操作。


    /*	异或加密法
     在对文本进行简单加密的时候,可以选择用一个n位的二进制数,对原文进行异或运算。
     解密的方法就是再执行一次同样的操作。
     加密过程中n位二进制数会循环使用。并且其长度也可能不是8的整数倍。
     下面的代码演示了如何实现该功能。
    
    
     请仔细阅读,填写空缺的代码(下划线部分)。
     注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
     直接写在题面中不能得分。
     */
    public class 异或加密法 {
    	public static void print(char[] p){
    		for(char x:p){
    			System.out.printf("%s", x);
    		}
    		System.out.println();
    	}
    	public static void f(char[] buf, char[] uckey, int n) {
    		int i;
    		for (i = 0; i < n; i++)
    			buf[i] = (char) (buf[i] ^ uckey[i]);
    	}
    
    	public static void main(String[] args) {
    		char p[] = "abcd中国人123".toCharArray(); // 待加密串
    		char[] key = "11001100010001110".toCharArray(); // 以串的形式表达的密匙,运算时要转换为按位存储的形式。
    		int np = p.length;
    		int nk = key.length;
    		char[] uckey = new char[np];
    
    		// 密匙串需要按位的形式循环拼入 uckey中
    		int i;
    		for (i = 0; i < np * 8; i++) {
    			if (key[i % nk] == '1')
    				uckey[i/8] |= (char)0x80 >> (i%8); // 填空1
    			else
    				uckey[i/8] &= ~(char)0x80 >> (i%8); // 填空2
    		}
    		f(p, uckey, p.length);
    		print(p);
    		f(p, uckey, p.length);
    		print(p);
    	}
    }
    

    运行结果:

    ­%G亞囬乣¹Þ÷
    abcd中国人123
    


  • 相关阅读:
    C# 操作XML
    js把字符串(yyyymmdd)格式转换成日期格式(yyyy-mm-dd)
    解析GZIP压缩的网页
    访问修饰符
    c# 多态中 Virtual与override的作用
    C# 中 ref 和out 的区别
    C# .net 中文手册地址
    js获取URL参数
    几种Css前端框架资料
    android 检查能否上网
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3055187.html
Copyright © 2020-2023  润新知