热情软件屋

 

如何保存密码等信息


编号:QA001024
建立日期: 1999年5月22日 最后修改日期:2001年2月6日
所属类别:

jcj101:
    VB5简体中文专业版
    PWin98
    我在程序设计中遇到这样一个问题,敬请指教:我想在程序中设置一个访问权限,但这个密码在程序运行时应该可以被修改,就像Windows中屏幕保护的密码设置一样,但是我不知道这个密码文件应该怎样存放,是修改注册表吗?可是现在照我的理解,注册表修改或增加键值后仍然可以被人发现,(我可以使用RegCreateKeyEx、RegQueryValueEX、RegSetValueEx等API)失去了保密的目的。该怎样实现这一功能?一般商用软件是怎样做到的?谢谢!!!

回答:

    大多数商业软件都是把密码等重要信息保存在注册表中或单独的文件中。如果把密码直接保存当然是不可靠的。所以一般都是结果一定的变换,比如用255减去每个字符的ASCII码,然后将结果保存起来。验证密码时用255减去读出的值就可以得到真实的密码。你当然可以使用更复杂的转换算法。例如:
    Dim s As String, nCode() As Integer
    s = "ABCdejkk"
    ReDim nCode(1 To Len(s)) As Integer
    For i = 1 To Len(s)
     nCode(i) = 255 - Asc(Mid(s, i, 1))
    Next
    你也可以从http://home.worldonline.co.za/~midtech下载一个简单的免费的加密/解密ActiveX DLL(也可以在这里下载cryptodll.exe)。它挺适合你这样的工作。
    另外,不要使用空值作为没有密码的标志,这样如果破解者删除了有关的文件或注册表设置就可以不使用密码了。当然,没有一种方法是绝对可靠的。屏幕保护、Outlook以及许多软件保存的密码都可以被破解。
    
    相关问题:
    QA000088 "VB压缩和加密算法DES程序源代码"

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio