我使用过的一些校验函数

sha1:

openssl提供了sha1的库,在安装openssl之后可以直接调用sha1。

MD5:

函数原型见附件,其中static void MDFile (filename)是对文件进行MD5校验的,static void MDString (inString)是对字符串进行MD5校验的。可以直接使用,也可以封装成库后在调用,值得注意的是,需要将源码中函数定义中的static去掉。

hash:

hash算法见附件。

TCP/IP/UDP/ICMP中的checksum:

/*计算校验和*/
USHORT checksum(USHORT *buffer,int size)
{
  unsigned long cksum=0;

  while(size>1)
  {
    cksum+=*buffer++;
    size -=sizeof(USHORT);
  }
  if(size)
  {
   cksum+=*(UCHAR*)buffer;
  }
  cksum =(cksum>>16)+(cksum & 0xffff);
  cksum+=(cksum>>16);
  return (USHORT)(~cksum);
}

CRC校验:

int file_crc32(const char *filename,unsigned int *crc)
{
 unsigned char buffer[MAX_BUFFER_SIZE];
 unsigned int vcrc = 0xffffffff;
 unsigned int read = 0;
 unsigned int filesize = 0;
 FILE *fp = NULL;
 struct stat fst;

 if(stat(filename,&fst))
 {
  printf("get file info failed\n");
  return -1;
 }
 /* unsigned long may denote the file size */
 if((filesize = fst.st_size) == 0)
  return -1;

 /* open file */
 if((fp = fopen(filename,"r")) == NULL)
 {
  printf("open the file failed\n");
 }

 while(filesize)
 {
  read = filesize > MAX_BUFFER_SIZE ? MAX_BUFFER_SIZE:filesize;
  if((read = fread(buffer,1,read,fp)) == 0) break;
  /* CRC */
  crc32(buffer,read,&vcrc);
  filesize -= read;
 }
 *crc = ~vcrc;
 fclose(fp);
 return 0;
}

void crc32(const unsigned char* byte,unsigned int length,unsigned int *vcrc)
{
 unsigned int i = 0;
 for(i = 0; i < length; i++)
 *vcrc = ((*vcrc) >> 8) ^ crc32table[byte[i] ^ ((*vcrc) & 0x000000FF)];
}

文章来源:http://qq164587043.blog.51cto.com/261469/159169

时间: 2024-08-02 23:45:38

我使用过的一些校验函数的相关文章

form文本域的通用校验函数

名称:form文本域的通用校验函数作用:检测所有必须非空的input文本,比如姓名,账号,邮件地址等等.该校验现在只针对文本域,如果要针对form里面的其他域对象,可以改变判断条件.使用方法:在要检测的文本域中加入title文字.文字是在提示信息,你要提示给用户的该字段的中文名.比如要检测用户名html如下<input name="txt_1" title="姓名">,当然,最好用可视化工具比如dreamweaver什么的来编辑域.如果要检测数字类型数据

JS 常用校验函数_javascript技巧

//校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } //校验登录名:只能输入5-20个以字母开头.可带数字."_"."."的字串 function isRegisterUserName(s) { var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/; if

js常用验证函数[校验密码.校验普通电话]

下面是我们提供的常用js校验函数了,它有电话验证,密码验证,用户名,手机验证,IP验证,等. //校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } //校验登录名:只能输入5-20个以字母开头.可带数字."_"."."的字串 function isRegisterUserName(s) { var pat

JavaScript常用验证函数实例汇总

 一.字符串类验证 1. 长度限制   代码如下: <script> function test() { if(document.a.b.value.length>50) { alert("不能超过50个字符!"); document.a.b.focus(); return false; } } </script> <form name=a onsubmit="return test()"> <textarea nam

PostgreSQL 聚合函数讲解 - 5 线性回归

首先讲个线性回归分析linear regression (最小二乘法least-squares-fit)的小故事(取自百度) :  1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星.经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置.随后全世界的科学家利用皮亚齐的观测数据开始寻找谷神星,但是根据大多数人计算的结果来寻找谷神星都没有结果.时年24岁的高斯也计算了谷神星的轨道.奥地利天文学家海因里希·奥尔伯斯根据高斯计算出来的轨道重新发现了谷神星. 高斯使

MFC中对话框的数据交换(DDX)和数据校验(DDV)

MFC中对话框的数据交换(DDX)和数据校验(DDV)<reference MFC TNO 26>DDX : dialog data exchangeDDV : dialog data validation文档描述MFC中的DDX DDV机制,如何使用DDX_和DDV_ 函数和定制自己的DDX_ ,DDV_函数: Dialog Data Exchange概要:对话框的数据交换不依赖于任何宏来实现,全部依赖于C++代码实现,唯一特别之处在于每一个对话框如果想处理自己的数据交互必须重载一个虚函数v

JavaScript常用验证函数实例汇总_javascript技巧

本文实例汇总了JavaScript常用验证函数.分享给大家供大家参考.具体汇总如下: 一.字符串类验证 1. 长度限制 复制代码 代码如下: <script> function test() { if(document.a.b.value.length>50) { alert("不能超过50个字符!"); document.a.b.focus(); return false; } } </script> <form name=a onsubmit=&

身份证校验算法与ASP程序_应用技巧

18位身份证校验算法  身份证校验码算法  身份证校验码产生方法: ∑(ai×Wi)(mod 11) i: 表示号码字符从由至左包括校验码在内的位置序号: ai 表示第i位置上的号码字符值: Wi 第i位置上的加权因子,其数值Wi=mod(power(2,(n-1)),11) i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 相应的校验码: ∑(ai×WI)(mod 11

jQuery formValidator 表单校验插件 仿网易邮箱注册页面

  插件新增功能: 1.增加输入框设置默认值,formValidator函数增加onShowText(字符串,默认值为空)和onShowTextColor(字符串数组,默认值为["#999999","#000000"])两个属性.详见demo8里的"你的描述"控件 默认字体为灰色,获取焦点后录入的文字是黑色的. 范例: $("#ms").formValidator({onShowFixText:"",onS