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

解决方案 »

  1.   

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

  2.   

    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, 明文存储缓存, 缓存大小)。该函数调用成功后即可得到接密后的明文。
    六、关闭消息解码。
    // 手痛了,费神了。。汗!!
      

  3.   

    //下面的算法即所谓的加法同余密码,强度不是很高,但稍微修改后应该够用了。
    //其中的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;
    }
      

  4.   

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