Эти данные уже существуют, и теперь мне нужно иметь возможность читать/ напишите его с 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));
Код: Выделить всё
PassBytes := BytesOf(@WideString(PASSWORD)[1], Length(PASSWORD) * SizeOf(WideChar));
SetLength(keyBytes, 36);
sha1 := THashSHA1.GetHashBytes(TBytesStream.Create(PassBytes));
md5 := THashMD5.GetHashBytes(TBytesStream.Create(PassBytes));
Move(sha1[0], keyBytes[0], 20);
Move(md5[0], keyBytes[20], 16);
Код: Выделить всё
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);
Отредактируйте, чтобы добавить: я не хотел реализовывать подобные вещи. Мне просто не терпится с этим справиться.
Изменить: добавлен процесс генерации ключа. Для тестирования мой ключ — «pass», а DATA — «ABCD» и т. д., в зависимости от этого случая я пытаюсь работать.
Я понимаю, что шифрование MyDAC кажется нестандартным, и именно здесь возникает моя проблема. от :') Надеюсь, кто-нибудь сможет понять, как воспроизвести его с помощью стандартных инструментов.
MyDAC не предоставляет никакой документации по своему шифрованию, кроме заявления о том, что это Blowfish.
Подробнее здесь: https://stackoverflow.com/questions/790 ... tes-blocks
Мобильная версия