Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ CRijndael仅加密长字符串的前32个字节_Visual C++_Aes_Rijndael - Fatal编程技术网

Visual c++ CRijndael仅加密长字符串的前32个字节

Visual c++ CRijndael仅加密长字符串的前32个字节,visual-c++,aes,rijndael,Visual C++,Aes,Rijndael,我使用CRijndael()进行加密,使用的是基于null的iv(我知道这是一个问题,但由于某些原因,我不得不使用它) 对于更长的字符串(或包含几个符号),我只加密了前32个字节。较短的字符串被加密,没有任何问题。代码在下面,有什么想法吗 char dataIn[] = "LONG STRING HERE"; string preInput = dataIn; CRijndael aRijndael; aRijndael.MakeKey("32-BIT-KEY

我使用CRijndael()进行加密,使用的是基于null的iv(我知道这是一个问题,但由于某些原因,我不得不使用它)

对于更长的字符串(或包含几个符号),我只加密了前32个字节。较短的字符串被加密,没有任何问题。代码在下面,有什么想法吗

    char dataIn[] = "LONG STRING HERE";
    string preInput = dataIn;


    CRijndael aRijndael;
    aRijndael.MakeKey("32-BIT-KEY-HERE", CRijndael::sm_chain0, 32, 16);



    while (preInput.length() % 16 != 0) {
        preInput += '\0';
    }
    const char *encInput = preInput.c_str();
    char szReq[1000];
    aRijndael.Encrypt(preInput.c_str(), szReq, preInput.size(), CRijndael::CBC);

    const std::string preBase64 = szReq;
    std::string encoded = base64_encode(reinterpret_cast<const unsigned char*>(preBase64.c_str()), preBase64.length());
char dataIn[]=“此处为长字符串”;
字符串预输入=数据输入;
克里恩代尔·阿里恩代尔;
MakeKey(“32位KEY-HERE”,CRijndael::sm_chain0,32,16);
while(preInput.length()%16!=0){
预输入+='\0';
}
const char*encInput=preInput.c_str();
char szReq[1000];
加密(preInput.c_str(),szReq,preInput.size(),CRijndael::CBC);
const std::string preBase64=szReq;
std::string encoded=base64_encode(reinterpret_cast(preBase64.c_str()),preBase64.length());

const std::string preBase64=szReq此操作在第一个0字节处停止
szReq
可能包含的内容。显然,在你的例子中,它在缓冲区的开始处包含一个。啊哈,谢谢你指出这一点。我应该如何将szReq放入字符串中,或者理想情况下是
const unsigned char*
以便我可以对其进行base64编码?
const unsigned char*p=(const unsigned char*)szReq谢谢,已经好多了。它大部分都是加密的,除了最末端(最后两个字符在解密时是乱七八糟的)。可能与base64_encode中的长度有关?可能。由于缺乏读心能力或工作水晶球,我发现对您未展示的代码进行评论相当具有挑战性。