计算机二级:我使用过的一些校验函数计算机二级考试

文章作者 100test 发表时间 2009:05:20 12:27:38
来源 100Test.Com百考试题网


  2009年下半年全国计算机等级考试你准备好了没?考计算机等级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库
  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)].
  }

  特别推荐:

  C/C 误区一:voidmain()

  C/C 误区二:fflush(stdin)

  C/C 误区三:强制转换malloc()的返回值

  C/C 误区四:charc=getchar().

  C/C 误区五:检查new的返回值



相关文章


计算机二级C 辅导:sleep与alarm计算机二级考试
计算机二级:我使用过的一些校验函数计算机二级考试
计算机二级基础知识:C_C 常见误区计算机二级考试
计算机二级C 惯用法之RAII计算机二级考试
在C 中如何使用调试器逐步跟踪程序计算机二级考试
计算机二级C_C 误区五:检查new的返回值计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛