/// <summary> /// Runs a Kerberos implemented RC4 Encryption /// </summary> /// <param name="xConfounder">Outputs new Confounder</param> /// <param name="xPayload">Outputs the payload</param> /// <param name="x">RC4 Reference</param> /// <returns></returns> public static byte[] KerberosEncrypt(this RC4 x, ref byte[] xConfounder, ref byte[] xPayload) { var xIn = new List <byte>(); xIn.AddRange(xConfounder); xIn.AddRange(xPayload); return(x.RunAlgorithm(xIn.ToArray())); }
/// <summary> /// Generates a new counfounder of your choice /// </summary> /// <param name="x"></param> /// <param name="ConLen"></param> /// <returns></returns> public static byte[] NewConfounder(this RC4 x, long ConLen) { var xReturn = new byte[ConLen]; var xRand = new Random(); for (var i = 0; i < 8; i++) { xReturn[i] = (byte)xRand.Next(0, 0xFF); } return(xReturn); }
/// <summary> /// Runs a Kerberos implemented RC4 decryption /// </summary> /// <param name="xConfounder">The confounder input</param> /// <param name="xPayload">The payload input</param> /// <param name="x">RC4 reference</param> /// <param name="xData">Data to be decrypted</param> /// <param name="xConLen">Length of the Confounder</param> /// <returns></returns> public static bool KerberosDecrypt(this RC4 x, byte[] xData, out byte[] xConfounder, int xConLen, out byte[] xPayload) { xPayload = new byte[0]; xConfounder = new byte[0]; try { var xOut = new DJsIO(x.RunAlgorithm(xData), true) { Position = 0 }; xConfounder = xOut.ReadBytes(xConLen); xPayload = xOut.ReadBytes(xData.Length - xConLen); xOut.Dispose(); } catch { return(false); } return(true); }
/// <summary> /// Runs an RC4 encryption with a specified key /// </summary> /// <param name="xKey"></param> /// <param name="xConfounder"></param> /// <param name="xPayload"></param> /// <returns></returns> public static byte[] RunKerberosEncrypt(byte[] xKey, ref byte[] xConfounder, ref byte[] xPayload) { var xrc4 = new RC4(xKey); return(xrc4.KerberosEncrypt(ref xConfounder, ref xPayload)); }
/// <summary> /// Runs a Kerberos RC4 encryption on the specified data /// </summary> /// <param name="xKey">Key input</param> /// <param name="xConfounder">outputs the confounder</param> /// <param name="xPayload">Outputs the payload</param> /// <param name="xConLen">Confounder Length</param> /// <param name="xData">Outputs the decrypted data</param> /// <returns></returns> public static bool RunKerberosDecrypt(byte[] xKey, byte[] xData, out byte[] xConfounder, int xConLen, out byte[] xPayload) { var xrc4 = new RC4(xKey); return(xrc4.KerberosDecrypt(xData, out xConfounder, xConLen, out xPayload)); }
/// <summary> /// Runs an RC4 on the specified data using the specified key /// </summary> /// <param name="xKey"></param> /// <param name="xData"></param> /// <returns></returns> public static byte[] RunAlgorithm(byte[] xKey, byte[] xData) { var xrc4 = new RC4(xKey); return(xrc4.RunAlgorithm(xData)); }