前言
自闭FW了小半个月,一下就来到8月份了,不想再肥宅下去了,于是整理了下之前实验课做过的一些东西,传传到github上。
今天整理的是大二上学期密码学实验课的几个实验,用MFC写的凯撒加密、DES、SM4、RSA。代码和实验报告均传到了github上了
https://github.com/Miracle778/my_Crypto_lab
刚好之前看了看Go语言,但感觉不怎么熟练,于是想着,用Go语言重写下这几个实验看看,于是有了这一篇水文。
下面部分是我今天写之前做的简单记录,就粗糙着贴出来吧,各位看官就将就着看吧。
凯撒加密go语言实现
设计过程
分为三个模块
1.输入交互模块
先选择功能 加密或解密
选择好后,输入明文/密文,然后密钥
把输入的数据传给加解密模块
定义一个结构体作为该模块的传递消息格式
1 | type Msg struct { |
密文和明文可以含有空格,于是Msg.Data用bufio.NewReader()进行输入
密文明文里也可以含有数字,数字加解密以10为一轮
如果用Scanf多次输出的时候,千万记得吃掉缓冲里的回车1
2
3//这两行相当于c语言getchar
inputReader := bufio.NewReader(os.Stdin)
_, err := inputReader.ReadString('\n')
2.Caesar密码算法模块
根据输入模块传进来的参数,进行Caesar算法加/解密,然后把结果传给输出模块
3.输出结果
把加/解密结果输出
代码
图也懒得截了,直接放代码吧
代码因为是带着熟练Go语言去的,所以尽可能多的用了一下东西
如不同的输入、结构体、自定义errors、异常处理等
1 | //caesar.go |
总结
Go语言也太难受了吧,代码格式太强制了吧…,还是Python香。
怼着输入搞了半天总算搞清楚Scan Scanf Scanln bufio.NewReader
这几个该怎么用了。
这几天再整理整理,把之前几个别的实验课的pyqt的项目跟python网络编程的东西备份到github上去,哎,不知不觉就大四了…
好久没水文章了,自闭了小半个月,是时候逃离肥宅状态了。
前几天也看了看Java反序列化的东西,过两天贴上来。
最后引用一句著名艺术家lb的名言结束
总有人要当FW 那为什么不能是我呢 (/dog