CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

VC有没有比较简单的加密函数,不需要一堆的代码和参数

楼主ihavenojob(喜欢下雨天)2003-09-03 10:54:47 在 VC/MFC / 基础类 提问

在做一个很小的办公管理软件,需要对用户密码加密,不需要很复杂  
  UNIX下有个crypt(),VC有没有类似的简单好用的加密函数 问题点数:50、回复次数:11Top

1 楼potatoli(新来的)回复于 2003-09-03 11:20:00 得分 5

upTop

2 楼my_mtx(水木)回复于 2003-09-03 13:32:27 得分 5

Program   Files\Microsoft   Visual   Studio\VC98\Include\WINCRYPT.H  
  看这个头文件,里面就是微软的加密库函数  
  Top

3 楼ihavenojob(喜欢下雨天)回复于 2003-09-03 14:10:59 得分 0

可是那么多函数,该用那个呢?而且参数都那么多,有没有简单一点的,直接传入明文传出密文Top

4 楼ihavenojob(喜欢下雨天)回复于 2003-09-03 15:15:18 得分 0

那位高人帮帮忙阿Top

5 楼ihavenojob(喜欢下雨天)回复于 2003-09-03 16:04:58 得分 0

???Top

6 楼NeoBean(Neo-Bean)回复于 2003-09-04 10:31:11 得分 30

Windows   提供的   CryptAPI   是很全面的要做出简单的明文密文加密解密其实不难。给你说说步骤想信就能够理解了。下面提供最普通的消息编码、解码的步骤,希望对你有帮助。  
   
  编码:  
  一、取得编码消息块的大小,调用CryptMsgCalculateEncodedLength(PKCS_7_ASN_ENCODING   |   X509_ASN_ENCODING,   0,   CMSG_DATA,   NULL,   NULL,   要编码的消息长度   +   1),该函数返回消息块大小。  
  二、得到编码消息块大小后就分配指定大小的空间。  
  三、打开要编码的消息,调用CryptMsgOpenToEncode(PKCS_7_ASN_ENCODING   |   X509_ASN_ENCODING,   0,CMSG_DATA,   NULL,   NULL,   NULL),该函数返回一个消息句柄。  
  四、消息更新,利用刚刚得到的消息句柄将消息更新,调用CryptMsgUpdate(消息句柄,   要编码的明文,   编码消息长度   +   1,   是否位最后的消息编码,如果你只调用一次编码则该参数为TRUE)。  
  五、取得消息编码后的密文,调用CryptMsgGetParam(消息句柄,   CMSG_BARE_CONTENT_PARAM,   0,   第二步分配的存储编码后消息的缓存,   缓存大小),此方法调用成功后密文则存放在缓存中可以写成文件了。  
  六、关闭消息编码。  
   
  解码:  
  一、打开要解码的消息,调用CryptMsgOpenToDecode(PKCS_7_ASN_ENCODING   |   X509_ASN_ENCODING,   0,   CMSG_DATA,   NULL,   NULL,   NULL),该函数返回一个消息句柄。  
  二、将密文(编码后的密文)更新,调用CryptMsgUpdate(消息句柄,   密文内容,   密文大小,是否为最后一次调用)。  
  三、取得解码后的明文大小,调用CryptMsgGetParam(消息句柄,CMSG_CONTENT_PARAM,   0,   NULL,   &dwSize)。该函数成功后dwSize为解码后的明文大小。  
  四、为保存解码后的明文分配dwSize的存储空间。  
  五、取得解码后的明文内容,调用CryptMsgGetParam(消息句柄,   CMSG_CONTENT_PARAM,   0,   明文存储缓存,   缓存大小)。该函数调用成功后即可得到接密后的明文。  
  六、关闭消息解码。  
   
   
  //   手痛了,费神了。。汗!!Top

7 楼sunheroshang(简单.剑胆)回复于 2003-09-04 11:06:48 得分 5

学习Top

8 楼mathliu(lvhong)回复于 2003-09-04 11:11:32 得分 5

//下面的算法即所谓的加法同余密码,强度不是很高,但稍微修改后应该够用了。  
  //其中的13和95可根据需要换成别的数字  
  //算法很简单,解密过程就不说了。  
   
  char*   CTttDlg::ROT13(char   *szPassword)  
  {  
  if(szPassword==NULL)  
  return   NULL;  
  for(int   i=0;*(szPassword+i)!='\0';i++)  
  *(szPassword+i)=(*(szPassword+i)+13)%95;  
  return   szPassword;  
  }  
  Top

9 楼ihavenojob(喜欢下雨天)回复于 2003-09-04 14:54:34 得分 0

多谢各位的指点,我在大学的专业不是计算机,所以密码学的知识很欠缺。  
  我的做法是将用户的密码加密,保存到数据库中,用户登陆时,将加密的密码和数据库中的相比较,现在有个问题就是:用这些方法加密后的密文会不会包含值为0的字节啊???因为到时候取数据和比较密码都用的是操作字符串的函数,如果包含0的话会有问题Top

10 楼flinming(flinming)回复于 2003-09-04 15:09:12 得分 0

异或了Top

11 楼mathliu(lvhong)回复于 2003-09-05 16:56:02 得分 0

使用前面的   char*   ROT13(char   *szPassword)这个函数是不会出现0字符的,而CryptAPI或者异或均不适合你这里的情况。Top

相关问题

  • 求加密函数
  • vc中,在一个函数内部如何得到函数名和函数参数,将其打印出来?
  • vc++7.0中,在一个函数内部如何得到函数名和函数参数,将其打印出来?
  • 怎么用Vc给VB做 字符串参数的函数?
  • delphi调用vc的dll的函数不能返回参数??
  • 在VC里如何给main函数提供参数值?
  • delphi调用VC编的ocx函数的参数传递问题
  • delphi调用VC编的ocx函数的参数传递问题
  • BCB6.0中如何调用VC的DLL带参数的函数?
  • biosdisk()函数参数

关键词

  • 函数
  • 编码
  • 消息
  • 加密
  • 解码
  • 密码
  • vc
  • 用户
  • 句柄
  • 调用

得分解答快速导航

  • 帖主:ihavenojob
  • potatoli
  • my_mtx
  • NeoBean
  • sunheroshang
  • mathliu

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo