本人上网查了一个加密算法——md5,想必各位大虾都见过了。(头文件:md5.h,源代码文件:md5c.c)
本人拿这个算法对用户密码进行加密,可就是不懂的怎样添加进去。
要对其加密的语句如下:
#include "md5.h"
.........
.........
user[i].user=struser;//从对话框获取用户名
user[i].pass=strpass;//从对话框获取密码
RWini("security.ini",no,"user",struser,false);//把用户名写入.ini文件中
RWini("security.ini",no,"pass",MDString(strpass),false);//把密码写入.ini文件中
//----------------------------------
问题就在于MDString(strpass),运行时出现如下提示:
cannot convert parameter 1 from 'char [2]' to 'class CString *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
我知道这样直接调用不行,因为MDString()函数没有返回值,但我不知道怎么调整。先谢谢各位了。
//----------------------------------
AfxMessageBox("添加成功!",MB_OK);//添加成功
本人拿这个算法对用户密码进行加密,可就是不懂的怎样添加进去。
要对其加密的语句如下:
#include "md5.h"
.........
.........
user[i].user=struser;//从对话框获取用户名
user[i].pass=strpass;//从对话框获取密码
RWini("security.ini",no,"user",struser,false);//把用户名写入.ini文件中
RWini("security.ini",no,"pass",MDString(strpass),false);//把密码写入.ini文件中
//----------------------------------
问题就在于MDString(strpass),运行时出现如下提示:
cannot convert parameter 1 from 'char [2]' to 'class CString *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
我知道这样直接调用不行,因为MDString()函数没有返回值,但我不知道怎么调整。先谢谢各位了。
//----------------------------------
AfxMessageBox("添加成功!",MB_OK);//添加成功
我现在要的是返回值怎么解决?
如果没有,google搜MD5Update
我也尝试让它返回值但是数据类型又不匹配
总是提示字符类型不能转换。怎么办哪
昨天下午搞到现在都还是无里头。恳求大虾多多指点了
怎么可以“让它返回值”呢?它原来是什么样子的?
static void MDString (string)
char *string;
{
MD5_CTX context;
unsigned char digest[16];
unsigned int len = strlen (string); MDInit (&context);
MDUpdate (&context, string, len);
MDFinal (digest, &context); printf ("MD%d (\"%s\") = ", MD, string);
MDPrint (digest);
printf ("\n");
}
MDInit (&context);
MDUpdate (&context, string, len);
MDFinal (digest, &context);此时,结果就保存在digest中。人家的MDString只是个示例程序而已,告诉你怎么用这套代码而已。还有,MD5不是加密算法,是散列算法。怎么大家都说“MD5加密”,郁闷。:(
for(int i = 0;i < 16; i++)
sprintf(s + i * 2, "%02X", digest[i]);然后就可以:RWini("security.ini",no,"pass",hex,false);
int hex[64];
for(int i = 0;i < 16; i++)
sprintf(hex + i * 2, "%02X", digest[i]);
md5还广泛用于加密和解密技术上。比如在unix系统中用户的密码就是以md5(或其它类似的算法)经加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成md5值,然后再去和保存在文件系统中的md5值进行比较,进而确定输入的密码是否正确。
所以,楼上不必郁闷:),这个是RSA写的MD5的用法,比较好!
http://cosoft.org.cn/html/osl/showFiles.php?group_id=14015