询:MFC如何实现长二进制数据移位取反等操作?

temp200802 2008-04-02 09:10:03
我从ACCESS数据库内已读出数据并且写入了文件,但数据是乱码,显然是被加密过的。现在想实现解密过程,但该如何对长二进制数据实现移位取反等操作呢?我是新手,请高手们说详细些,最好给出一些代码。谢谢!

附:我用的读取和写入文件代码如下:

long lDataLength=pRst->Fields->GetItem("cry_data")->ActualSize ;
varBLOB = pRst->GetFields()->GetItem("cry_data")->GetChunk(lDataLength);
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
BYTE *pBuf = NULL;
pBuf = (BYTE*)GlobalAlloc(GMEM_FIXED,lDataLength);
SafeArrayAccessData(varBLOB.parray,(void **)pBuf);
//Build a File in Windows Temp Directory
char tmpPath[_MAX_PATH+1];
GetTempPath(_MAX_PATH,tmpPath);
CString strFileName = "temp";
strFileName = tmpPath+strFileName;

CFile outFile(strFileName,CFile::modeCreate|CFile::modeWrite);
LPSTR buffer = (LPSTR)GlobalLock((HGLOBAL)pBuf);
outFile.WriteHuge(buffer,lDataLength);
GlobalUnlock((HGLOBAL)pBuf);
outFile.Close();
SafeArrayUnaccessData (varBLOB.parray);
}
...全文
232 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-04-02
  • 打赏
  • 举报
回复
分段操作,可以按字长或者按字节逐个进行。移位需要把相临的两个单元组合。用C/C++右移时要使用无符号数,否则遇到最高位为1时结果会有错。
zhoujianhei 2008-04-02
  • 打赏
  • 举报
回复
随手写个右移的

void s_r(unsigned char* array, unsigned int size)
{
_asm{
shr byte ptr array, 1
lea esi, array[1]
mov ecx, size - 1
l_rcr:
rcr byte ptr [esi], 1
add esi, 1
loop l_rcr
}
}
用户 昵称 2008-04-02
  • 打赏
  • 举报
回复
	//ut中存放原始数据,从ut[ 1 ]开始存放
//offset是移位,0-7有效
//结果存放在ut1中
unsigned char ut[ 256 ] = "";
unsigned char ut1[ 256 ] = "";
ut[ 0 ] = 0;
ut[ j + 1 ] = 0;
for( i = 0; i < j; i++ )
{
ut1[ i + 1 ] = ( ( ut[ i + 1 ] >> offset ) & 0xff ) + ( ( ut[ i ] << ( 8 - offset ) ) & 0xff );
}
用户 昵称 2008-04-02
  • 打赏
  • 举报
回复
按字节分别 取反,就相当于取反了。

移位的问题
scq2099yt 2008-04-02
  • 打赏
  • 举报
回复
up
temp200802 2008-04-02
  • 打赏
  • 举报
回复
谢谢各位,我先去试试!

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧