使用DES加密,将密钥写死到程序里是否安全? 使用DES加密,将密钥写死到程序里是否安全?别人通过查看exe文件,是否能够分析出该密钥。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当然不安全了!呵呵,你应该做更多的“弯”============================================================================DocWizard http://www.betajin.com/alphasun/index.htm CryptoAPI or LsaStorePrivateDatadefine NS2HR(arg) if (0 != arg) return HRESULT_FROM_WIN32(GetLastError())STDMETHODIMP CSecurity::WriteSecret(IN BSTR KeyName, IN BSTR Data){ if ((NULL == KeyName) || (NULL == Data)) return E_INVALIDARG; LSA_HANDLE hLsa = 0; LSA_OBJECT_ATTRIBUTES loaUseless = {0}; NS2HR(LsaOpenPolicy(NULL, &loaUseless , POLICY_CREATE_SECRET, &hLsa)); LSA_UNICODE_STRING lsKey, lsData; InitLsaString(lsKey, const_cast<LPWSTR>(KeyName)); InitLsaString(lsData, const_cast<LPWSTR>(Data)); NS2HR(LsaStorePrivateData(hLsa, &lsKey, &lsData)); NS2HR(LsaClose(hLsa)); return S_OK;}STDMETHODIMP CSecurity::ReadSecret(IN BSTR KeyName, OUT BSTR *Data){ if (NULL == Data) return E_POINTER; if ((NULL == KeyName) || (NULL != *Data)) return E_INVALIDARG; LSA_HANDLE hLsa = 0; LSA_OBJECT_ATTRIBUTES loaUseless = {0}; NS2HR(LsaOpenPolicy(NULL, &loaUseless , POLICY_GET_PRIVATE_INFORMATION , &hLsa)); LSA_UNICODE_STRING lsKey, *plsData; InitLsaString(lsKey, const_cast<LPWSTR>(KeyName)); NS2HR(LsaRetrievePrivateData(hLsa, &lsKey, &plsData)); *Data = SysAllocStringLen(plsData->Buffer, plsData->Length / 2); NS2HR(LsaFreeMemory((LPVOID)plsData)); NS2HR(LsaClose(hLsa)); return S_OK;}void CSecurity::InitLsaString(OUT LSA_UNICODE_STRING& LsaString, IN LPWSTR szString){ DWORD StringLength; if (NULL == szString) { LsaString.Buffer = NULL; LsaString.Length = 0; LsaString.MaximumLength = 0; } else { StringLength = wcslen(szString); LsaString.Buffer = szString; LsaString.Length = (USHORT) StringLength * sizeof(WCHAR); LsaString.MaximumLength = (USHORT) (StringLength + 1) * sizeof(WCHAR); }}; by the way, AES is better than DES. GPS串口问题 关于异常处理的疑问 send函数的问题 有目前正在北京找工作的兄弟吗?大家讨论一下C++的路在何方 请问列表控件的标题部分能不能支持复杂点的功能,比如支持换行??? 在formview中 如何将一个小图覆盖在一个大图上呀 例如 在一个大图上加一个小图标 请问在一台电脑上怎样做串口通信的编程呀,怎么看得出效果嘛? ADO操作数据库时,插入数据的问题? 关于变量声明和头文件包含,在线等待!希望各位大虾帮忙! 用什么工具对DLL中的对话框 誰有《Windows图形编程》? vc.net能兼容VC6.0的代码吗?它们之间有什么主要区别?(在线等!)
DocWizard http://www.betajin.com/alphasun/index.htm
STDMETHODIMP CSecurity::WriteSecret(IN BSTR KeyName, IN BSTR Data)
{
if ((NULL == KeyName) || (NULL == Data))
return E_INVALIDARG;
LSA_HANDLE hLsa = 0;
LSA_OBJECT_ATTRIBUTES loaUseless = {0};
NS2HR(LsaOpenPolicy(NULL, &loaUseless , POLICY_CREATE_SECRET, &hLsa));
LSA_UNICODE_STRING lsKey,
lsData;
InitLsaString(lsKey, const_cast<LPWSTR>(KeyName));
InitLsaString(lsData, const_cast<LPWSTR>(Data)); NS2HR(LsaStorePrivateData(hLsa, &lsKey, &lsData));
NS2HR(LsaClose(hLsa));
return S_OK;
}STDMETHODIMP CSecurity::ReadSecret(IN BSTR KeyName, OUT BSTR *Data)
{
if (NULL == Data)
return E_POINTER;
if ((NULL == KeyName) || (NULL != *Data))
return E_INVALIDARG;
LSA_HANDLE hLsa = 0;
LSA_OBJECT_ATTRIBUTES loaUseless = {0};
NS2HR(LsaOpenPolicy(NULL, &loaUseless , POLICY_GET_PRIVATE_INFORMATION , &hLsa)); LSA_UNICODE_STRING lsKey, *plsData;
InitLsaString(lsKey, const_cast<LPWSTR>(KeyName)); NS2HR(LsaRetrievePrivateData(hLsa, &lsKey, &plsData));
*Data = SysAllocStringLen(plsData->Buffer, plsData->Length / 2);
NS2HR(LsaFreeMemory((LPVOID)plsData));
NS2HR(LsaClose(hLsa));
return S_OK;
}void CSecurity::InitLsaString(OUT LSA_UNICODE_STRING& LsaString, IN LPWSTR szString)
{
DWORD StringLength;
if (NULL == szString)
{
LsaString.Buffer = NULL;
LsaString.Length = 0;
LsaString.MaximumLength = 0;
}
else
{
StringLength = wcslen(szString);
LsaString.Buffer = szString;
LsaString.Length = (USHORT) StringLength * sizeof(WCHAR);
LsaString.MaximumLength = (USHORT) (StringLength + 1) * sizeof(WCHAR);
}
};