Эти данные уже существуют, и теперь мне нужно иметь возможность читать/ напишите его с C # с помощью BouncyCastle, но при попытке я сталкиваюсь с исключениями длины данных. Что мне нужно использовать, чтобы разрешить передачу такого рода данных?
Ссылка на то, как я это делаю с BouncyCastle:
Код: Выделить всё
var cipher = CipherUtilities.GetCipher("Blowfish/CBC/NoPadding");
cipher.Init(true, new ParametersWithIV(new KeyParameter(key), new byte[8]));
byte[] encryptedData = cipher.DoFinal(Encoding.UTF8.GetBytes(DATA));
Код: Выделить всё
table.Encryption.Encryptor := TMyEncryptor.Create(nil);
table.Encryption.Encryptor.DataHeader := ehNone;
table.Encryption.Encryptor.SetKey(keyBytes, 0, 32);
table.Encryption.Fields := 'Name';
// Insert a row with DATA in the Name
Код: Выделить всё
Codec := TCodec.Create(nil);
Codec.CryptoLibrary := TCryptographicLibrary.Create(nil);
Codec.StreamCipherId := BlockCipher_ProgId;
Codec.BlockCipherId := Blowfish_ProgId;
Codec.ChainModeId := CBC_ProgId;
setIV := TIVZero.Create(); // This sets the IV to all zeros
Codec.OnSetIV := setIV.SetIV;
SetLength(LBKeyBytes, 34);
Move(keyBytes[0], LBKeyBytes[1], 32);
LBKeyBytes[0] := 32; // Length of the key
LBKeyBytes[33] := 0; // Does the key contain the stores
Codec.InitFromStream(TBytesStream.Create(LBKeyBytes));
Codec.EncryptString(DATA, outputText, TEncoding.UTF8);
Отредактируйте, чтобы добавить: я не хотел реализовывать подобные вещи. Мне просто не терпится с этим справиться.
Подробнее здесь: https://stackoverflow.com/questions/790 ... tes-blocks
Мобильная версия