私は IV (初期化ベクトル) とキーを持っています。文字列を暗号化する必要があります。これはコードです:
function TForm1.CipherAES (key: AnsiString; Vector: AnsiString;
InStream: TMemoryStream) : TMemoryStream;
var
cipher: TDCP_rijndael;
i: integer;
toEnc, toSnd : array of byte;
outStream, AStream :TMemoryStream;
StreamR, Stream2 : AnsiString;
begin
outStream := TMemoryStream.Create;
SetLength(toEnc, InStream.Size);
cipher := TDCP_rijndael.Create(nil);
cipher.Init(key[1], 128, nil);
cipher.SetIV(vector[1]);
cipher.BlockSize := 16;
InStream.Position := 0;
for I := 0 to InStream.Size-1 do
InStream.Read(ToEnc[i], 1);
for I := 0 to inStream.size-1 do
StreamR := StreamR + ByteToHex(toEnc[i]) + ' ';
Memo1.Lines.Add(StreamR);
inStream.Position := 0;
cipher.CipherMode := cmCBC;
cipher.EncryptStream(inStream, outStream, InStream.Size);
Base64Encode(outStream.Memory, @StreamR[1], outStream.Size);
Stream2 := Copy(StreamR, 1, outStream.Size + 8);
Memo1.Lines.Add(Stream2);
Memo1.Lines.Add(StreamR);
outStream.Position := 0;
SetLength(toSnd, outStream.Size);
for I := 0 to outStream.Size-1 do
outStream.Read(toSnd[i], 1);
StreamR := '';
for I := 0 to outStream.size-1 do
StreamR := StreamR + ByteToHex(toSnd[i]) + ' ';
Memo1.Lines.Add(StreamR);
cipher.burn;
cipher.free;
Result := outStream;
end;
ストリームを base64 に渡すと、次の答えが得られます。
ub/JkCsCZwbAnyqjo+miIw==
ただし、次のようにする必要があります。
ub/JkCsCZwbAnyqjo+miI2XNZwNrJo31YBNTwQuHkq0=
誰かが私を助けることができますか?なぜこのようなことが起こっているのですか?
前もって感謝します