public ProcessBlock ( byte input, int inOff, byte output, int outOff ) : int | ||
input | byte | |
inOff | int | |
output | byte | |
outOff | int | |
return | int |
static byte[] decrypt(byte[] byteArray, BlowfishEngine bf) { int blockSize = 8; List<byte> decrypted = new List<byte>(); for (int i = 0; i < byteArray.Length; i = i + blockSize) { byte[] blockBytes = new byte[blockSize]; byte[] outBytes = new byte[blockSize]; for (int j = 0; j < blockSize; j++) { blockBytes[j] = byteArray[i + j]; } bf.ProcessBlock(blockBytes, 0, outBytes, 0); decrypted.AddRange(outBytes); } unpad(decrypted); return decrypted.ToArray(); }
private void decrypt(byte[] value, BlowfishEngine bf) { int blockSize = bf.GetBlockSize(); byte[] vector = new byte[blockSize]; for (int i = 0; i < blockSize; i++) vector[i] = 0; for (int i = 0; i < value.Length; i += blockSize) { byte[] tmp = new byte[blockSize]; bf.ProcessBlock(vector, 0, tmp, 0); int chunk = Math.Min(blockSize, value.Length - i); for (int j = 0; j < chunk; j++) { vector[j] = value[i + j]; value[(i + j)] = (byte)(value[(i + j)] ^ tmp[j]); }; }; }