现在有一个文件"1.txt",当我用AES加密后,生成另外一个文件“1.txt.en",按理来说,当文件解密时,会生成回原文件”1.txt",但现在要求在解密的过程中,在不生成文件“1.txt"的情况下,直接显示解密后的文件”1.txt“的内容,如何做到?

解决方案 »

  1.   

    应该是先得到1.txt的内容,然后生成1.txt文件啊
      

  2.   

    aes加解密都是在内存中进行的吧?有源码的话,你会看到他是一块块解密的,你只要修改解密的函数让它不要保存成文件,而只是保存在CHAR*里面,那就就可以不用写文件显示内容了.
      

  3.   

    可能它现在的AES源码是bool CAESWrapper::DecryptMS(CString srcPath,CString DestPath);
    只要进去改一下就行了....反正都是有字符流才能写文件的. 
      

  4.   

    这个就是解密原代码了,如何不生成文件直接将其内容显示出来
    UpdateData(true);
    if(EnDe_filename1=="")return;
    FILE* finput;
    FILE* foutput;
    finput=fopen((LPCTSTR)EnDe_filename1,"rb");
    if(!finput)
    {


    AfxMessageBox("Open file failed");        return;
    }
    fseek(finput,0,SEEK_END);
    long lFileLen=ftell(finput); 
    fseek(finput,0,SEEK_SET);
    long blocknum=lFileLen/16;
    long leftnum=lFileLen%16;
    EnDe_filename1+=".de";
    foutput=fopen((LPCTSTR)EnDe_filename1.Left((EnDe_filename1.GetLength()-6)),"wb");
    unsigned char inBuff[25],ouBuff[25]; Aes aes(16,(unsigned char*)(LPCTSTR)m_DeKey);
    for(long i=0;i<blocknum;i++)
    {
    fread(inBuff,1,16,finput);  
    aes.InvCipher(inBuff,ouBuff);
    fwrite(ouBuff,1,16,foutput);
     
    }
    fclose(finput);
    fclose(foutput);}谢谢大家了
      

  5.   

    在解码中不写进文件,而是写进内存就得拉~用变量存就可以拉 例如CArray
    最后确认才写文件~~??
      

  6.   

     for(long i=0;i<blocknum;i++)
        {
            fread(inBuff,1,16,finput);  
            aes.InvCipher(inBuff,ouBuff);
           // fwrite(ouBuff,1,16,foutput);
             CArray[i] = ouBuff; //??这样可以的吗?,最后做完所有东西再把CARRY写到文件
        }
    ....>>>>>>>> 
      

  7.   

    把文件数据一次全部读出,全部解密,然后不写文件,直接使用解密后的数据,用SetWindowText显示到控件上。
      

  8.   

    如何把数据ouBuff一块块地读出,再用SetWindowText显示出来?
      

  9.   

    既然是txt,可以用CString来进行+=操作,然后显示就行了
      

  10.   

    就差那么一点了,
    CString str3,Addstr;
    unsigned char ouBuff[25];long blocknum=lFileLen/16; Aes aes(16,(unsigned char*)(LPCTSTR)m_DeKey);
    for(long i=0;i<blocknum;i++)
    {
    fread(inBuff,1,16,finput);  
    aes.InvCipher(inBuff,ouBuff);
    // fwrite(ouBuff,1,16,foutput);

    str3=ouBuff;
    Addstr+=str3; }

    m_rich.SetWindowText(Addstr);
    原来文件内是这样的1=D:\HOOK2\TaskBarDll\weigh and size.xls
    2=D:\HOOK2\weigh and size.xls
    但解密后却变成这样1=D:烫烫烫烫烫烫K_\HOOK2\TaskBarDl烫烫烫烫烫烫K_l\weigh and size烫烫烫烫烫烫K_.xls
    2=D:\HOOK2烫烫烫烫烫烫K_\weigh and size.烫烫烫烫烫烫K_xls为什么是这样呢?
      

  11.   

    看看你注释掉的代码://    fwrite(ouBuff,1,16,foutput);
    他是只写16字节到文件中,你换成str3=ouBuff;把所有内容都接收了,应该把str3截断,只取前面16个字符