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

加密过程中n位二进制数会循环使用。并且其长度也可能不是8的整数倍。

下面的代码演示了如何实现该功能。
请仔细阅读,填写空缺的代码(下划线部分)。

void f(char* buf, unsigned char* uckey, int n)
{int i;for(i=0; i<n; i++)buf[i] = buf[i] ^ uckey[i];    //异或运算,即:buf[i] ^= uckey[i]
}int main(int argc, char* argv[])
{char p[] = "abcd中国人123";  // 待加密串char* key = "11001100010001110";  //以串的形式表达的密匙,运算时要转换为按位存储的形式。int np = strlen(p);int nk = strlen(key);unsigned char* uckey = (unsigned char*)malloc(np);  // unsigned char是无符号字节型,char类型变量的大小通常为1个字节(1字节=8个位)    // 密匙串需要按位的形式循环拼入 uckey中int i;for(i=0; i<np*8; i++){if(key[i%nk]=='1')______;  // 填空1按位或else______;  // 填空2按位与}f(p, uckey, strlen(p));f(p, uckey, strlen(p));printf("%s\n", p);free(uckey);return 0;
}uckey[i/8] |= (unsigned char)0x80 >> (i%8)
uckey[i/8] &= ~((unsigned char)0x80 >> (i%8))本题满分:14分填空1:(7分)uckey[i/8] |= (unsigned char)0x80 >> (i%8);    //>>表示右移位,位逻辑运算符:&按位与,|按位或,^按位异或,~取反,移位运算符:<<左移,>>右移
从数学上看,左移1位等于乘以2,右移1位等于除以2,然后再取整,移位溢出的丢弃填空2:(7分)uckey[i/8] &= ~((unsigned char)0x80 >> (i%8));注意所有逻辑等价形式都是正确的答案,比如可以使用左移位:(unsigned char)0x80 >> 2  等价于:0x01 << 5

java实现第二届蓝桥杯异或加密法相关推荐

  1. java实现第二届蓝桥杯地铁换乘(C++)

    地铁换乘. 为解决交通难题,某城市修建了若干条交错的地铁线路,线路名及其所属站名如stations.txt所示.线1 苹果园 .... 四惠东线2 西直门 车公庄 .... 建国门线4 ....其中第 ...

  2. java实现第二届蓝桥杯四方定理

    四方定理. 数论中有著名的四方定理:所有自然数至多只要用四个数的平方和就可以表示. 我们可以通过计算机验证其在有限范围的正确性. 对于大数,简单的循环嵌套是不适宜的.下面的代码给出了一种分解方案. 请 ...

  3. 蓝桥杯软件类比赛java,第十届蓝桥杯大赛软件类省赛

    第十届蓝桥杯大赛软件类省赛 这些题官网还没有解答的,我主要参考了b站UP主大雪菜的解法(绝大部分题先自己做了一遍),当然也网上查了一些解答,但发现现在网上的一些解法并不正确,希望可以给大家一个参考. ...

  4. Java实现第九届蓝桥杯小朋友崇拜圈

    小朋友崇拜圈 题目描述 班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己). 在一个游戏中,需要小朋友坐一个圈, 每个小朋友都有自己最崇拜的小朋友在他的右手边. 求满足条件的圈最大多少人 ...

  5. Java实现第九届蓝桥杯付账问题

    付账问题 题目描述 [题目描述] 几个人一起出去吃饭是常有的事.但在结帐的时候,常常会出现一些争执. 现在有 n 个人出去吃饭,他们总共消费了 S 元.其中第 i 个人带了 ai 元.幸运的是,所有人 ...

  6. Java实现第九届蓝桥杯三体攻击

    三体攻击 [题目描述] 三体人将对地球发起攻击.为了抵御攻击,地球人派出了 A × B × C 艘战舰,在太空中排成一个 A 层 B 行 C 列的立方体.其中,第 i 层第 j 行第 k 列的战舰(记 ...

  7. java实现第九届蓝桥杯三角形面积

    三角形面积 小明最近在玩一款游戏.对游戏中的防御力很感兴趣. 我们认为直接影响防御的参数为"防御性能",记作d,而面板上有两个防御值A和B,与d成对数关系,A=2^d,B=3^d( ...

  8. 循环节长度 java,第六届蓝桥杯java试题-循环节长度

    两个整数做除法,有时会产生循环小数,其循环部分称为:循环节. 比如,11/13=6=>0.846153846153.....  其循环节为[846153] 共有6位. 代码如下 import j ...

  9. Java实现第九届蓝桥杯螺旋折线

    螺旋折线 题目描述 如图p1.pgn所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0 ...

最新文章

  1. 爬虫之requests模块发送带header的请求
  2. map集合怎么取value值最大的前三_Java之集合(下)
  3. 金融python培训班_2019年做金融,一定要学Python!:附Python视频教程
  4. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'test'
  5. [PAT乙级]1032 挖掘机技术哪家强
  6. [教程]一份简单易懂的 TensorFlow 教程
  7. 安装Cocoapods,以及其中出现的问题
  8. Go 学习之路:Println 与 Printf 的区别
  9. .net core EF Core 调用存储过程
  10. Vue3.0 + Ts 项目框架搭建四:配置 Svg-Icon、Icon图标
  11. 《代码大全2》读书笔记 Week9
  12. Java中的断言 Assert
  13. 谷歌无法加载印象笔记剪辑插件
  14. Maven镜像仓库替换为阿里云镜像仓库
  15. 良田高拍仪接口文档对接
  16. linux 模拟误码率,误码率BER计算原理及仿真输出
  17. EXSI 中新建虚拟机
  18. Element-UI组件之其他Others
  19. JavaWeb项目中使用到的过滤器
  20. 敏思笃行——Be Relentlessly Resourceful

热门文章

  1. 每天叫醒你的不是闹钟,而是“爱词霸每日一句”——Python实现将每日一句定时推送至微信...
  2. SAP QM01 保存增强
  3. 1118 - Row size too large (> 8126).报错处理
  4. 【安卓逆向】CTF实战分析
  5. 人工智能都有哪些应用场景?需要哪些训练数据?
  6. 测试结果-HTML测试报告
  7. 如何将程序中的注释、空格去掉,软件著作权申请时要用
  8. 东芝杀入硬盘大战中 推混合硬盘产品
  9. android fastboot命令大全,安卓手机Fastboot模式百科介绍,Fastboot命令大全
  10. 趣链科技张帅:多种技术交叉融合助推区块链应用开拓全新局面 | FBEC 2019专访...