2022-2023-1 20221312 《计算机基础与程序设计》第五周学习总结

作业信息

班级链接:首页 - 2022-2023-1-计算机基础与程序设计 - 北京电子科技学院 - 班级博客 - 博客园 (cnblogs.com)


作业要求:2022-2023-1 《计算机基础与程序设计》教学进程 - 娄老师 - 博客园 (cnblogs.com)


作业目标:了解Pep/9虚拟机以及其中的机器语言、汇编语言,了解伪代码写法,学习部分C语言语法,了解白盒与黑盒测试

作业正文:2022-2023-1 20221312 《计算机基础与程序设计》第五周学习总结 - 20221312付安旭 - 博客园 (cnblogs.com)

教材学习内容总结

对一些Pep/9虚拟机内的机器语言与汇编语言有了基础了解,了解了伪代码写法,对C语言语法进行了巩固学习,明白了白盒与黑盒的测试过程

教材学习中的问题与解决过程

  • 问题1:个人阅读了教材6.5中“表达算法”的相关内容,留意到伪代码这一概念,那伪代码的写法是唯一的么?
  • 问题1解决方案:个人查阅网上资料,发现了与课本不同的伪代码的写法。伪代码的写法应该不唯一,但最最核心的内容便是要让语句像代码的同时明确表达出编写者的意思,这样的伪代码便是比较成功的。
  • 问题2:个人阅读了教材6.5.1中“伪代码的功能”的相关内容,注意到“伪代码并非一种计算机语言”,那伪代码的作用是什么?
  • 问题2解决方案:个人经查阅网上资料,学习到由于多种语言的存在,单纯的一种高级语言代码不能很好的被学习其他高级语言的人所理解,这时使用伪代码便可以让学习不同高级语言的人都能理解代码所想表达的意思,减少了解释的时间,提高了效率。

代码调试中的问题与解决过程

  • 问题1:对于XOR加密算法,个人在实际操作中,每次生成的密钥是固定的且每个字符都一样,那这样XOR加密便很不安全。

     

     

  • 问题1解决方案:个人经学习,知道在程序中使用的rand()函数在产生随机数时是个伪随机数,再开机的时刻,这个随机数便确定了,想要改变只能重启。

     

     而rand()函数在产生随机数时是需要种子的,我们不妨拿程序运行时的时间(精确到秒)做种子,那么每次启动程序后生成的随机数大概率会不一样。

     

     

     那么这种算法的加密性便增强了不少。

     

     可是各位仍能够发现,产生的密钥中每一位都是一样的,那么它的安全性仍不够高。倘若以时间(精确到秒)为种子,那么由于运行速度较快便会产生一样的随机数,如何解决该问题?

     

     只要我保证每一位产生的时间秒数不一样就可以。我们可以使用一个函数sleep(int seconds)来拖延每一位产生的时间。

     

     那么这样由于种子在变化,产生的随机数也会变化,那么不同位的字符就不一定是一样的了。

     这样每次产生的密钥每位的字符不一定相同。经操作后,这个版本加密与前面两个版本加密的安全性不一样了。

  • 问题2:个人向链表存入数据的过程中,产生了内存问题。

     

     

  • 问题2解决方案:个人在编写代码时,忘记了输入头部的指针,其实后面的数据并未储存。

     

     只需让p指向头部即可。

代码托管

1.XOR.c · zhuoxue/代码学习的路途 - 码云 - 开源中国 (gitee.com)

 

 2.lianbiao.c · zhuoxue/代码学习的路途 - 码云 - 开源中国 (gitee.com)

 

 3.paixu.h · zhuoxue/代码学习的路途 - 码云 - 开源中国 (gitee.com)

 

上周考试错题总结

  • 错题1:
    The central processing unit (CPU) of a computer is often a single integrated circuit.
    正确答案: 正确      个人作答: 错误
    错选原因:依然是对single的理解错误。single是单个的意思,不是简单。
  • 错题2:
    Which of the following contains the instruction register?
    A. Control unit   B. Arithmetic/logic unit   C. Auxiliary storage device   D. RAM   E. ROM
    正确答案: A           个人作答: B
    错选原因:知识不牢。指令寄存器在寄存单元中,即A。
  • 错题3:
    Whose name is attached to a type of computer architecture characterized by storing a program in the same place as regular data?
    A. Maurice Wilkes   B. John Vincent Atanasoff   C. J. Presper Eckert   D. John Mauchly   E. John von Neumann
    正确答案: E           个人作答: B
    错选原因:个人失误了,没有读出来E就是冯·诺伊曼。
  • 错题4:
    Which of the following is a computing technique in which multiple processors each contribute one part of an overall computation?
    A. Synchronous processing   B. Task-level parallelism   C. Data-level parallelism   D. SIMD (single instructions, multiple data)   E. Rotation delay
    正确答案: B           个人作答: A
    错选原因:B是任务级并行,可以是多个处理器分配不同的任务来同时处理一组数据。
  • 错题5:
    A computer’s front-side bus (FSB) is small, fast memory that is usually built into the processor chip.
    正确答案: 错误       个人作答: 正确
    错选原因:FSB是前端总线,小而快的存储物件应该是缓存。
  • 错题6:
    The following equation is an example of which Boolean algebra property?
    A. CommutativeB. AssociativeC. DistributiveD. IdentityE. ComplementF. De Morgan's law
    正确答案: B            个人作答: C
    这个题个人感觉应该是题目漏了点什么东西,好像题目中并没有给出那个实例。

感悟

虽然实现了XOR加密中产生位数字符不同的密钥,可是该算法明显有巨大的问题:耗时太长。

每有一个字符,便需要额外的一秒来运算随机数。

那这里有个问题:用时间换取这样的安全,合理么?

需要加密的文件字符串长度不一,如果文件字符串较长,会耗时巨大。

况且,生成密钥时间的增长,是否也会导致密钥更容易被攻破,反而降低了安全性?

这些问题,个人目前还无法回答。

后来有大师向个人推荐SSL等程序,但个人尚且无法运行部分范例的代码,并且最近个人有其他研究的方向,所以这些加密工具暂时没有过深的研究。或许它们有生成随机数更快的方法?

我仍无法回答。

但总有一天,作为信息安全系的学生,我能够回答上面的问题。

学习进度条

  代码行数(新增/累计) 博客量(新增/累计) 学习时间(新增/累计) 重要成长
第一周 0/0 4/4 12/12  
第二周 230/230 2/6 30/42  
第三周 160/390 5/11 18/60  
第四周 200/590 2/13 14/74  
第五周 180/770 2/15 10/84  

 

参考资料

1.计算机科学概论(原书第7版) (豆瓣) (douban.com)

2.C语言程序设计(第4版) (豆瓣) (douban.com)

3.伪代码书写方式_Mister_gua的博客-CSDN博客_伪代码怎么写

4.学会写伪代码 - fengMisaka - 博客园 (cnblogs.com)

5.(8 封私信 / 80 条消息) 伪代码到底有什么意义? - 知乎 (zhihu.com)

6.啊哈!算法 (豆瓣) (douban.com)

7.Linux下OpenSSL的安装与使用 - 娄老师 - 博客园 (cnblogs.com)

 

posted @ 2022-10-02 22:37  20221312付安旭  阅读(48)  评论(0编辑  收藏  举报