从我的角度上看,应该使用中间代理,这样的话效率要高很多,也安全很多。比如我实现的VC连接SQL2000,就是写一个中间件,客户端没有任何访问数据库的代码,一切交给代理,代理可以和数据库服务器运行在一台机器上,客户端和代理的通讯可以走SOCKET,也可以走DCOM,并且可以按照自己的意愿加密合压缩传送,这样效率很高。如果仅仅是不让人静态分析你的文件,那很容易,写一个加密算法,将你的文本资料加密,然后当作资源放到你的EXE中,编译,运行时解密,但如果别人用动态分析,截获你的连接包,那里边都是明文,等于没有加密,如果用中间件别人就拿你没有办法来!例如:
1、客户端产生一个随机数,用时间戳加密,传给服务端,服务端在用同样的方法产生另一个随机数,传给客户端,然后,客户端用这两个随机数按照一定算法加密你的重要信息,传给服务端,因为任何时候密钥只有一半在网上传送,所以是相当地安全的,这种情况下,即使你知道我用的是什么算法加密,也没有办法解密!因为每次握手产生的密钥都不同。2,更简单的方法是用EXE压缩软件把你的EXE压缩一下,然后用UE把EXE地文件头改一下这样,别人就不能解压了,而且里边的信息也无法直接被看到了!3……方法太多了!不好意思占篇幅了!

解决方案 »

  1.   

    用 L("password"), 其中password用全角输入!
    这样生成的字符串是UNICODE的!
    用的时候用WideCharToMultiByte()处理一下!
      

  2.   

    非常感谢 Tasehouny(阿甘) !
    您的采用中间件的思路非常好,但是基于某些方面的原因可能还不能做到,但是还是感谢您的这提示。另外,如果是静态的话,那很容易解决问题,其实我的程序也是加密过的。
    目前,我的程序发布出去后,我发现有点人就是利用防火墙等得到IP和PORT,再利用SQL SERVER的黑客端口监视工具得到发出的验证包来获取密码和帐号。
    您的第一种方法叙述了一个很好的加密思路,但是这个的实现我还是不很了解,是不是还需要一个中见件做转发?