密码学实验总结
在实验过程中,遇到了很多函数遗忘的问题,然后用了不少时间去查阅相关函数用法
在这里就简单小结一下,为以后的学习助力
单表仿射密码
-
fill 函数
fill(prime,prime+N,0)
将prime 数组,从0 开始 到N-1 的元素赋值为 0 -
FILE
C语言
头文件为
stdio.h
文件操作的结构体FILE函数 **
fprintf fgets fputs
**FILE *fp; fp = fopen(filename,"r");//打开文件 读取方式 fprintf(fp,"%s",msg);//像printf 一样用法 往文件中输出 fgets(msg,50,fp);//从 fp 中读入 50-1 个字符 到msg中 //当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止 fputs(msg,fp);//将 msg 输入到 文件fp fputc(c,fp);//将字符 输入到 fp c = fgetc(fp);//从文件 fp 读取一个字符
序列密码
-
bitset
类C++
存储时为倒叙
比如 初始化为 bitset<8>bint(35) 对应为 00100011
存储为 a[7] a[6] a[5] a[4] a[3] a[2] a[1] a[0] 和书上的图类似,右边为 第0位
bitset<5>bint(16);//长度为 5 ,用16,即10000 来初始化 bint.to_string();//将数据转化为 字符串
-
fstream
C++
-
从文件中用
file>>in
读取时,若要忽略空格 则添加infile>>noskipws;
-
判断是否到达 文件末尾
while(file.peek()!=EOF)
peek() 只是"看"了下一个字符而没有真正读取它;peek 函数返回下一个可用字符的副本,而不从流中移除它
file.open("test.txt",ios::in);
file.open("test.txt",ios::out);
if(!file) { cout<<"文件打开失败"<<endl; return 0; }
file.close();
-
AES密码
cout<<hex<<msg;
16进制输出
RSA密码
cin.getline()
读取一行 ;会一次读取多个字符(包括空白字符)
cout<<"请输入明文:";
char c = getchar();//吸收回车符
cin.getline(Plain,100,'\n');// 最多读取 100-1个字符
DSA数字签名
在使用VS时 遇到一些问题
#pragma warning(disable:4996); #define _CRT_SECURE_NO_WARNINGS;
用来忽略使用 fopen 的警告信息,不然不能运行
来源:CSDN
作者:YangJie-Edith
链接:https://blog.csdn.net/Northern_Light_Y/article/details/103914635