public static string DecryptZMKEncryptedUnderLMK(string encryptedZMK, KeySchemeTable.KeyScheme ks, int var) { switch (ks) { case KeySchemeTable.KeyScheme.SingleDESKey: case KeySchemeTable.KeyScheme.DoubleLengthKeyAnsi: case KeySchemeTable.KeyScheme.TripleLengthKeyAnsi: return(TripleDES.TripleDESDecrypt(new HexKey(Cryptography.LMK.LMKStorage.LMKVariant(LMKPairs.LMKPair.Pair04_05, var)), encryptedZMK)); case KeySchemeTable.KeyScheme.DoubleLengthKeyVariant: case KeySchemeTable.KeyScheme.TripleLengthKeyVariant: return(TripleDES.TripleDESDecryptVariant(new HexKey(Cryptography.LMK.LMKStorage.LMKVariant(LMKPairs.LMKPair.Pair04_05, var)), encryptedZMK)); default: throw new InvalidOperationException("Invalid key scheme [" + ks.ToString() + "]"); } }
public static string DecryptUnderLMK(string encryptedKey, KeySchemeTable.KeyScheme Target_KeyScheme, LMKPairs.LMKPair LMKKeyPair, string variantNumber) { string result = ""; switch (Target_KeyScheme) { case KeySchemeTable.KeyScheme.SingleDESKey: case KeySchemeTable.KeyScheme.DoubleLengthKeyAnsi: case KeySchemeTable.KeyScheme.TripleLengthKeyAnsi: case KeySchemeTable.KeyScheme.Unspecified: result = TripleDES.TripleDESDecrypt(new HexKey(Cryptography.LMK.LMKStorage.LMKVariant(LMKKeyPair, Convert.ToInt32(variantNumber))), encryptedKey); break; case KeySchemeTable.KeyScheme.DoubleLengthKeyVariant: case KeySchemeTable.KeyScheme.TripleLengthKeyVariant: result = TripleDES.TripleDESDecryptVariant(new HexKey(Cryptography.LMK.LMKStorage.LMKVariant(LMKKeyPair, Convert.ToInt32(variantNumber))), encryptedKey); break; default: break; } switch (Target_KeyScheme) { case KeySchemeTable.KeyScheme.DoubleLengthKeyAnsi: case KeySchemeTable.KeyScheme.DoubleLengthKeyVariant: case KeySchemeTable.KeyScheme.TripleLengthKeyAnsi: case KeySchemeTable.KeyScheme.TripleLengthKeyVariant: result = KeySchemeTable.GetKeySchemeValue(Target_KeyScheme) + result; break; default: break; } return(result); }