0

Crypto ++を使用して、AESのCBCスキームを実装しようとしています。私の問題はここから来ています: 2つの文字列を「xor」しようとすると、自分自身で文字をxorしようとすると、いくつかの問題が発生します。

unsigned char * xorOp(const char * s1,unsigned char * s2){    
     unsigned char *out = (unsigned char *) calloc(strlen(s1),sizeof(unsigned char));
     for(int i=0; s1[i]!=0;i++)
     {
          out[i] = s1[i] ^ s2[i];
          cout<<out[i]<<endl;
          if(out[i] == '\0') cout<<"not ok "<<s1[i]<<" "<<s2[i]<<endl;
     }

     return out;
}

呼び出し:

unsigned char * encryptedXOR = xorOp(plainTextBlock.c_str(),iv);

ここで、plainTextBlock はプレーン テキストからの 16 バイトのブロックで、iv は初期化ベクトル (16 バイト) です。その後、私の平文の長さが130で、パディング後144、暗号化後は288であると仮定すると、xorのためにその次元に到達できません。助けてください!ありがとうございました!

4

0 に答える 0