首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

直接把密钥写在代码里保险吗

2012-10-17 
直接把密钥写在代码里安全吗?C++写的程序,数据库用sqlite加密版的。在给数据库加密的时候,要写如下的语句:i

直接把密钥写在代码里安全吗?
C++写的程序,数据库用sqlite加密版的。
在给数据库加密的时候,要写如下的语句:

int sqlite3_key( sqlite3 *db, const void *pKey, int nKey),db 是指定数据库,pKey 是密钥,nKey 是密钥长度。例:sqlite3_key( db, "abc", 3);

请问各位高手,这样直接把密钥写在代码里,有被别人破译的危险吗?
有什么好的让密钥不会泄露的解决方法?


[解决办法]

探讨
C++写的程序,数据库用sqlite加密版的。
在给数据库加密的时候,要写如下的语句:

int sqlite3_key( sqlite3 *db, const void *pKey, int nKey),db 是指定数据库,pKey 是密钥,nKey 是密钥长度。例:sqlite3_key( db, "abc", 3);

请问各位高手,这样直接把密钥写在代码里,有被别人破译的危险吗?……

[解决办法]
这种做法安全性不高;

要再高一点,可以多重加密,对密钥进行加密(如楼上几位说的),而且最好结合多种加密算法(结合对称加密如AES/DES,非对称加密算法RSA,等等复合加密),这样别人破解复杂度会比较高,但还是能被破解的;

最安全的做法,是进行联机验证,通过你的服务器返回验证结果,验证的程序不要放在服务端,这样比较安全。
[解决办法]
如果你的程序只在自己的服务器上运行,还是可以做到十分安全滴...
从理论上来说,没法做出无法解密的东西.只能尽可能加大破解代价.当破解代价大于你的软件价值的时候,破解就变成无意义的了.
所以,不要过于纠结于加密的问题.
如果真有必须加密的东西,请使用现成的,有理论保证的加密手段.像RSA,DSA这类.而你这种黑盒加密,一般来说都比较容易破解.
另外,单纯的客户端加密,一般来说加密强度有限.服务器认证相对比较安全.

还有,事实上,多数的安全问题,是由安全机制以外的问题引起的.
这就像再NB的TT也不能完全阻止AIDS一样
[解决办法]
探讨
还有,我在网上搜索到了一种方案,
说是依据某种生成因子,动态的生成密钥。
比如,根据每个人的用户名来生成密钥等。

不知道这种方案是否可行?
有没有什么比较好的生成因子?

热点排行
Bad Request.