public static string TripleDESEncryptVariant(HexKey key, string data) { if ((data == null) || ((data.Length != 32) && (data.Length != 48))) { throw new Exceptions.XInvalidData("Invalid data for 3DEncrypt with variant"); } string result1; string result2; string result3 = ""; string orgKeyPartB; if (data.Length == 32) { orgKeyPartB = key.PartB; key.PartB = Utility.XORHexStrings(key.PartB, Cryptography.LMK.Variants.DoubleLengthVariant(1).PadRight(16, '0')); result1 = TripleDESEncrypt(key, data.Substring(0, 16)); key.PartB = Utility.XORHexStringsFull(orgKeyPartB, Cryptography.LMK.Variants.DoubleLengthVariant(2).PadRight(16, '0')); result2 = TripleDESEncrypt(key, data.Substring(16, 16)); } else { orgKeyPartB = key.PartB; key.PartB = Utility.XORHexStringsFull(key.PartB, Cryptography.LMK.Variants.TripleLengthVariant(1).PadRight(16, '0')); result1 = TripleDESEncrypt(key, data.Substring(0, 16)); key.PartB = Utility.XORHexStringsFull(orgKeyPartB, Cryptography.LMK.Variants.TripleLengthVariant(2).PadRight(16, '0')); result2 = TripleDESEncrypt(key, data.Substring(16, 16)); key.PartB = Utility.XORHexStringsFull(orgKeyPartB, Cryptography.LMK.Variants.TripleLengthVariant(3).PadRight(16, '0')); result3 = TripleDESEncrypt(key, data.Substring(32, 16)); } return(result1 + result2 + result3); }
public static string TripleDESDecrypt(HexKey key, string data) { if ((data == null) || ((data.Length != 16) && (data.Length != 32) && (data.Length != 48))) { throw new Exceptions.XInvalidData("Invalid data for 3DEncrypt"); } string result; if (data.Length == 16) { result = TripleDESDecryptSingleLength(key, data); } else if (data.Length == 32) { result = TripleDESDecryptSingleLength(key, data.Substring(0, 16)) + TripleDESDecryptSingleLength(key, data.Substring(16, 16)); } else { result = TripleDESDecryptSingleLength(key, data.Substring(0, 16)) + TripleDESDecryptSingleLength(key, data.Substring(16, 16)) + TripleDESDecryptSingleLength(key, data.Substring(32, 16)); } return(result); }
private static string TripleDESDecryptSingleLength(HexKey key, string data) { string result = ""; result = DES.DESDecrypt(key.PartC, data); result = DES.DESEncrypt(key.PartB, result); result = DES.DESDecrypt(key.PartA, result); return(result); }
internal static string TripleDESEncrypt(HexKey hexKey, object zEROES) { throw new NotImplementedException(); }