MFC控件ListBox中如何将某一列像密码列进行加密显示
程序功能是实现用户管理包括增删改用户信息。
ListBox中显示所以用户的信息,包括用户ID、用户名、用户密码、用户权限与备注。
问题是用户密码会被明明白白地显示出来,如何进行加密,让这一密码列以加密后的字符显示出来?
ListBox控件的相关代码如下:
// 初始化显示m_lListUser
this->m_lListUser.InsertColumn(0,_T("用户ID"));
this->m_lListUser.InsertColumn(1,_T("用户帐号"));
this->m_lListUser.InsertColumn(2,_T("用户密码"));
this->m_lListUser.InsertColumn(3,_T("用户权限"));
this->m_lListUser.InsertColumn(4,_T("备 注"));
// 设定m_lListUser的列宽等
RECT rect;
this->m_lListUser.GetWindowRect(&rect);
int wid=rect.right-rect.left;
this->m_lListUser.SetColumnWidth(0,wid/8);
this->m_lListUser.SetColumnWidth(1,wid/5);
this->m_lListUser.SetColumnWidth(2,wid/5);
this->m_lListUser.SetColumnWidth(3,wid/5);
this->m_lListUser.SetColumnWidth(4,11*wid/40);
this->m_lListUser.SetExtendedStyle(LVS_EX_FULLROWSELECT);
// 删除既有数据项
this->m_lListUser.DeleteAllItems();
// 从数据库中提取最新数据并将结果集显示于m_lListUser
CString sqlstr;
_variant_t effectSum;
pRst.CreateInstance(__uuidof(Recordset));
sqlstr.Format(_T("select * from UserTab"));
try
{
pRst=pCnn->Execute(_bstr_t(sqlstr),&effectSum,adCmdText);
}
catch(_com_error &e)
{
AfxMessageBox(e.Description());
}
if(effectSum)
{
CString temp;
_variant_t tmp;
int i=0;
while(!pRst->_EOF)
{
tmp=pRst->GetCollect("UserId");
if(tmp.vt != VT_NULL)
temp=(LPCTSTR)_bstr_t(tmp);
else
temp=_T("");
this->m_lListUser.InsertItem(i,temp);
tmp=pRst->GetCollect("UserName");
if(tmp.vt != VT_NULL)
temp=(LPCTSTR)_bstr_t(tmp);
else
temp=_T("");
this->m_lListUser.SetItemText(i,1,temp);
tmp=pRst->GetCollect("UserPwd");
if(tmp.vt != VT_NULL)
temp=(LPCTSTR)_bstr_t(tmp);
else
temp=_T("");
this->m_lListUser.SetItemText(i,2,temp);
tmp=pRst->GetCollect("UserAut");
if(tmp.vt != VT_NULL)
temp=(LPCTSTR)_bstr_t(tmp);
else
temp=_T("");
this->m_lListUser.SetItemText(i,3,temp);
tmp=pRst->GetCollect("UserNote");
if(tmp.vt != VT_NULL)
temp=(LPCTSTR)_bstr_t(tmp);
else
temp=_T("");
this->m_lListUser.SetItemText(i,4,temp);
i++;
pRst->MoveNext();
}
}
请问各位高手,如何做才能达到对密码列进行加密显示的要求?
在此先谢谢各位的帮忙了.
[解决办法]
tmp=pRst->GetCollect("UserPwd");
if(tmp.vt != VT_NULL)
temp=(LPCTSTR)_bstr_t(tmp);
将上面的取得的密码字符串temp按照你自己的加密规则转化一下再显示就行
例如:temp=_T(L"45532396");
假如你的加密规则为:4->a,5->b,3->c,2->d,9->e,6->t
这样转化后temp=_T("abbcdcet");然后显示在列表框
[解决办法]