Я пытаюсь имитировать шифрование Blowfish / Hex Coldfusion, используя BouncyCastle для ASP.NET MVC. Мне удалось успешно расшифровать строку, зашифрованную в CF, используя шаги, изложенные в этой ссылке: Шифрование и дешифрование данных с использованием Blowfish / CBC / PKCS5Padding
Кроме добавления \ 0 в конец строки из 7 символов, он отлично работает.
Я не пытаюсь использовать Blowfish / CBC / PKCS5Padding, только Blowfish / Hex. Я не могу заставить работать реверс (шифрование). Ниже приведен код, который у меня есть до сих пор
Я пытался использовать ручное заполнение =, а также игнорировать. Однако даже при использовании дополнительного символа он все равно не синхронизируется.
Расшифровка (работает):
string keyString = "TEST";
BlowfishEngine engine = new BlowfishEngine();
PaddedBufferedBlockCipher cipher = new PaddedBufferedBlockCipher(engine);
cipher.Init(false, new KeyParameter(Convert.FromBase64String(keyString)));
byte[] out1 = Hex.Decode(hexstring);
byte[] out2 = new byte[cipher.GetOutputSize(out1.Length)];
int len2 = cipher.ProcessBytes(out1, 0, out1.Length, out2, 0);
cipher.DoFinal(out2, len2);
string myval = Encoding.UTF8.GetString(out2);
Шифрование (не работает):
string keyString = "TEST";
string stringToEncrypt = "0123456";
stringToEncrypt = stringToEncrypt + "=";
BlowfishEngine engine2 = new BlowfishEngine();
PaddedBufferedBlockCipher cipher2 = new PaddedBufferedBlockCipher(engine2);
cipher2.Init(true, new KeyParameter(Convert.FromBase64String(keyString)));
byte[] inB = Hex.Encode(Convert.FromBase64String(stringToEncrypt));
byte[] outB = new byte[cipher2.GetOutputSize(inB.Length)];
int len1 = cipher2.ProcessBytes(inB, 0, inB.Length, outB, 0);
cipher2.DoFinal(outB, len1);
var myval2 = BitConverter.ToString(outB).Replace("-", "");
Значение «Не работает» - возвращает зашифрованную строку, которая никоим образом не отражает строку, зашифрованную CF. Кроме того, возвращаемая строка, если она расшифрована с использованием вышеуказанного метода, не совпадает с той, которая была первоначально введена (с использованием шифрования .NET / BouncyCastle)