加密算法中涉及C/C++总结
学习网站:http://www.runoob.com/cplusplus/cpp-functions.html
char在VC(c++)中占1字节(byte),8位(bit)。
int在VC(c++)中占4字节(4byte),32位(32bit)。
一、相关函数摘要
1、srand( (unsigned) time( &t ) )
随机函数srand()函数产生一个以当前时间开始的随机种子
2、time( &t )
获取time_t类型的当前时间
3、 clock()
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数。
4、FILE *fopen(const char *filename, const char *mode) ;
使用给定的模式 mode 打开 filename 所指向的文件
- filename -- 这是 C 字符串,包含了要打开的文件名称。
- mode -- 这是 C 字符串,包含了文件访问模式,模式如下:
模式 | 描述 |
---|---|
"r" | 打开一个用于读取的文件。该文件必须存在。 |
"w" | 创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。 |
"a" | 追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。 |
"r+" | 打开一个用于更新的文件,可读取也可写入。该文件必须存在。 |
"w+" | 创建一个用于读写的空文件。 |
"a+" | 打开一个用于读取和追加的文件。 |
该函数返回一个 FILE 指针。否则返回 NULL,且设置全局变量 errno 来标识错误。
5、size_t fread(void *ptr , size_t size , size_t nmemb , FILE *stream);
从给定流 stream 读取数据到 ptr 所指向的数组中
- ptr -- 这是指向带有最小尺寸 size*nmemb 字节的内存块的指针。
- size -- 这是要读取的每个元素的大小,以字节为单位。
- nmemb -- 这是元素的个数,每个元素的大小为 size 字节。
- stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输入流。
成功读取的元素总数会以 size_t 对象返回,size_t 对象是一个整型数据类型。如果总数与 nmemb 参数不同,则可能发生了一个错误或者到达了文件末尾。
6、char *strcat(char *dest, const char *src)
把 src 所指向的字符串追加到 dest 所指向的字符串的结尾
- dest -- 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。
- src -- 指向要追加的字符串,该字符串不会覆盖目标字符串。
该函数返回一个指向最终的目标字符串 dest 的指针。
7、 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
把 ptr 所指向的数组中的数据写入到给定流 stream 中;把ptr所指向的nmemb*size个字节输出到stream所指向的文件中。
- ptr -- 这是指向要被写入的元素数组的指针。
- size -- 这是要被写入的每个元素的大小,以字节为单位。
- nmemb -- 这是元素的个数,每个元素的大小为 size 字节。
- stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。
返回写到stream文件总的数据项个数。
8、int fclose(FILE *stream)
关闭stream所指文件,释放文件缓冲区
- stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了要被关闭的流。
出错返回非0,否则返回0。
9、int feof(FILE *stream)
测试给定流 stream 的文件结束标识符;检查文件是否结束。
- stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
遇到文件结束符返回非零值,否者返回0。
二、ECC代码中调用的大数库(tommath)函数总结
1、mp_int a
mp_digit是无符号整数;dp是存放大整数的地址;used为实际使用的mp_digit单元;sign=0,表示非负数;=1表示负数。
2. mp_init
初始化mp_int结构,函数返回MP_OKAY,就可以认为该结构已正确初始化,可以安全的被库中其他函数使用
3. mp_init_set_int
初始化mp_int结构并设置大常量。它接受一个“长”数据类型作为输入,并且总是将其当作一个32位整数。
输入一个mp_int类型的和一个“长”整型b,输出a等于b。
4.mp_init_set
其中b是一个数据位。
初始化mp_int结构并设置小常量。例如将mp_int结构设置成一个相对较小的值(1或2等)。
5. mp_toradix
函数原型为:int mp_toradix(mp_int *a, char *str, int radix)
此算法计算mp_int类型的a的以r为基的表示法,并把数位存在数组temp(char型)中并以字符串形式输出到屏幕上。
6. mp_prime_random_ex
函数原型为:int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback cb, void *dat);
*dat一般可设置为NULL。
求一定位数的素数
a为返回值,t为回测次数,通常可为10,size指产生的素数的位数
7.mp_expt_d
函数原型为:int mp_expt_d(mp_int *a, mp_digit b, mp_int *c)
此算法计算a的b次幂,其中b为单数位数字。
8. mp_sqr
函数原型为:int mp_sqr(mp_int *a, mp_int *b)
输入mp_int类型的a,输出b=a^2.分配了一个临时mp_int b来保存平方结果。
9.mp_sqrt
函数原型为:int mp_sqrt(mp_int *arg, mp_int *ret);
此算法为开平方根算法。
10.mp_mul_d
函数原型为:int mp_mul_d(mp_int *a, mp_digit b, mp_int *c)
单数位乘法。此算法快速计算mp_int与单数位值的乘积。输入mp_int a和mp_digit b,输出c=ab
11.mp_mul
函数原型为:int mp_mul(mp_int *a, mp_int *b, mp_int *c);
计算两个数的有符号乘积。返回结果为目标操作数c=ab。
12.mp_add
函数原型为:int mp_add(mp_int *a, mp_int *b, mp_int *c)
输入两个mp_int类型的a和b,输出有符号加法c=a+b。
13.mp_sub
函数原型为:int mp_sub(mp_int *a, mp_int *b, mp_int *c);
输入两个mp_int类型的a和b,输出有符号加法c=a-b。
14.mp_mod
函数原型为:int mp_mod(mp_int *a, mp_int *b, mp_int *c)
输入两个mp_int类型的a和b ,输出c=a mod b, 0 <= c < b
15.mp_cmp
函数原型为:int mp_cmp(mp_int *a, mp_int *b)
有符号数的比较。输入两个mp_int类型的a和b,输出有符号数比较结果(a在b的左边)
函数返回值为MP_GT=1时为大于;MP_EQ=0时为等于;MP_LT=-1时为小于。
16.mp_clear
函数原型为:void mp_clear(mp_int *a);
输入:mp_int类型的变量a,输出:回收为a分配的内存。
17.mp_copy
函数原型为:int mp_copy(mp_int *a, mp_int *b);
b = a,该算法拷贝了mp_int结构a,算法成功终止时,mp_int结构b就和a代表同一个整数值。mp_int结构b是结构a的完整但不同的拷贝,mp_int结构a可以修改并且不会影响mp_int结构b的值。
18.mp_init_copy
函数原型:int mp_init_copy(mp_int *a, mp_int *b);
初始化mp_int结构a,并将b拷贝到a 。
19. mp_zero
函数原型为:void mp_zero(mp_int *a);
输入mp_int 类型的a,并将a的内容清零。
20.mp_invmod
函数原型为:int mp_invmod(mp_int *a, mp_int *b, mp_int *c);
c = 1/a (mod b)
输入mp_int a和b,(a,b)=1,p>=2,0<a<p,输出模逆c=a^-1(mod b)。即ab=1(mod p)
21.mp_mulmod
函数原型为:int mp_mulmod(mp_int *a, mp_int *b, mp_int *c, mp_int *d);
此算法求解 d = a * b (mod c)
22. mp_submod
函数原型为:int mp_submod(mp_int *a, mp_int *b, mp_int *c, mp_int *d);
此算法求解 d = a - b (mod c)
转载自:http://blog.csdn.net/wjj1987/article/details/6409469
加密算法中涉及C/C++总结的更多相关文章
- PHP开发中涉及到emoji表情的几种处理方法
最近几个月做微信开发比较多,存储微信昵称必不可少 可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了 一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一 ...
- [转]PHP开发中涉及到emoji表情的三种处理方法
最近几个月做微信开发比较多,存储微信昵称必不可少,可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了 一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一 ...
- MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集
MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的.character-set-database:数据 ...
- 介绍MFC框架中涉及到的设计模式(二)
接着上一篇<介绍MFC框架中涉及到的设计模式(一)>介绍 单例模式(Singleton Pattern) 单例模式是一种经常使用的软件设计模式.在它的核心结构中仅仅包括一个被称为单例类的特 ...
- A Multigrid Tutorial中涉及到的难点词汇
Multigrid Tutorial中涉及的词汇: Elliptic PDEs 椭圆型偏微分方程 Lawrence Livermore National Laboratory 劳伦斯利福摩尔国家实验室 ...
- Solr查询中涉及到的Cache使用及相关的实现【转】
转自:http://www.cnblogs.com/phinecos/archive/2012/05/24/2517018.html 本文将介绍Solr查询中涉及到的Cache使用及相关的实现.Sol ...
- bootstrap实战练习中涉及的知识点(很有用哦!)
看的有关视频做的笔记,对bootstrap中涉及的知识点做了一定的解析,很有用哦!(新手上路,有不合适的地方可以指出哦!) 下面进入正题: Bootstrap是当下最流行的前端框架(界面工具集) 特点 ...
- 【Qt开发】qt中涉及到空格包含路径的解决办法
qt中涉及到空格路径,qmake是无法正确编译的. 需要在空格路径前面加上$$quote INCLUDEPATH += $$quote(C:/Program Files/MySQL/MySQL Ser ...
- 聊一聊 MySQL 中的数据编辑过程中涉及的两阶段提交
MySQL 数据库中的两阶段提交,不知道您知道不?这篇文章就简单的聊一聊 MySQL 数据库中的两阶段提交,两阶段提交发生在数据变更期间(更新.删除.新增等),两阶段提交过程中涉及到了 MySQL 数 ...
随机推荐
- 解决Android中ListView列表只显示一项数据的问题
思路:获取每项item的高度,并相加,再加上分割线的高度,作为整个ListView的高度,方法如下: public static void setListViewHeightBasedOnChildr ...
- 洛谷P1156 垃圾陷阱 dp
正解:dp 解题报告: 这儿是传送门! 话说最近怎么神仙们都开始狂刷dp,,,感觉今天写了好多dp的题解的样子?(也就三四道其实× 然后这题,首先看到要么吃要么堆起来就会想到01背包趴?然后就考虑设方 ...
- Linux下编译安装PHP扩展memcached
[安装 libevent] $ tar zxvf libevent-2.0.20-stable.tar.gz $ cd libevent-2.0.20-stable/$ ./configure --p ...
- PAT 1057 Stack [难][树状数组]
1057 Stack (30)(30 分) Stack is one of the most fundamental data structures, which is based on the pr ...
- 数据挖掘-KNN-K最近邻算法
1. 算法核心思想: 通过计算每个训练样本到待分类样本的距离,选取和待分类样本的距离最近的 K 个训练样本,K个样本中那个类别的训练样本占据着多数, 则表明待分类的样本就属于哪一个类别. KNN算法在 ...
- html编码常见的有utf-8和gb2312编码等,应该如何判断选择?
html如何选择编码,常见utf-8和gb2312编码如何判断选择 一.首先了解目前国内中文网页常用编码是utf-8 还是gb2313. 比如: 百度搜索 网页使用utf-8 腾讯新闻 网页使用utf ...
- vs2010中如何编写C语言程序
File->New->Project 在打开的New Project对话框中最左侧一栏中选择Visual C++下面的CLR,之后在其右侧的区域中选择CLR Empty Applicati ...
- DNS服务器配置实践
实验背景:在Linux系统上配置主要DNS服务器和辅助DNS服务器,所在域名为example.com,子网为192.168.X.0. 启动已安装LINUX系统,进行DNS服务器配置. 一.配置主要DN ...
- springboot+mybatis项目自动生成
springboot_data_access_demo基于rapid,根据自定义模版生成的基于mybatis+mysql的数据库访问示例项目.简单配置数据库信息,配置不同的生成策略生成可以直接运行访问 ...
- Python3.x:open()文件操作
Python3.x:open()文件操作 open/文件操作: #open(路径+文件名,读写模式) #读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式 f=ope ...