Esempio n. 1
0
        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() + "]");
            }
        }
Esempio n. 2
0
        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);
        }