예제 #1
0
 public void PopWindow(PopWindow wd)
 {
     try
     {
         Console.WriteLine(wd.ToYDSdkJsonString());
         var cipherText = m_crypto.Encrypt(AESCrypto.ToBytes(wd.ToYDSdkJsonString()));
         var param      = new Dictionary <string, object>()
         {
             { "app_id", m_appId },
             { "msg_encrypt", cipherText }
         };
         var client = new HttpClient();
         var rsp    = client.Post(this.apiPopWindow(), param, HttpContentTypes.ApplicationJson);
         Helper.CheckHttpStatus(rsp);
         var body = rsp.StaticBody <Dictionary <string, object> >(overrideContentType: HttpContentTypes.ApplicationJson);
         Helper.CheckApiStatus(body);
     }
     catch (WebException e)
     {
         throw new HttpRequestException(0, e.Message, e);
     }
     catch (Exception e)
     {
         if (e is GeneralEntAppException)
         {
             throw e;
         }
         else
         {
             throw new UnexpectedException(e.Message, e);
         }
     }
 }
        public ActionResult Encrypt(string plainText)
        {
            ViewBag.PlainText = plainText;
            byte[] encryptedBytes     = AESCrypto.AES_EncryptString(plainText);
            string encryptedHexString = CryptoHelper.ConvertByteArrayToHexString(encryptedBytes);

            ViewBag.EncryptedHexString = encryptedHexString + "&HMacToken=" + GenerateHMac(encryptedHexString);
            return(View("Index"));
        }
예제 #3
0
        public void AESCrypto_EncryptDecrypt_ReturnsCorrectResult()
        {
            var sut      = new AESCrypto();
            var expected = Guid.NewGuid().ToString();
            var cipher   = sut.EncryptData(expected);
            var actual   = sut.DecryptDataToString(cipher);

            Assert.Equal(expected, actual);
        }
    public void Player_Data_Save()
    {
        FireBaseManager.Instance.LogEvent("Setting_Data_Save");

        string jsonStr = JsonUtility.ToJson(DataManager.Instance.state_Player);
        string aes     = AESCrypto.AESEncrypt128(jsonStr);

        StartCoroutine(Save(aes));
    }
        public dat_super_secret_app(string AESKey)
        {
            this.InitializeComponent();

            _AESKey = AESKey;

            lblSubInfo.Text = AESCrypto.DecryptData(lblSubInfo.Text, _AESKey);
            lblTitle.Text   = AESCrypto.DecryptData(lblTitle.Text, _AESKey).ToUpper();
            _DDL            = AESCrypto.DecryptData(_DDL, _AESKey);
        }
예제 #6
0
        /// <summary>
        /// 搜索文件信息
        /// </summary>
        /// <param name="mediaId">资源Id</param>
        /// <returns>(文件名, 字节数大小)</returns>
        /// <exception cref="AESCryptoException">加解密失败</exception>
        /// <exception cref="ParamParserException">参数解析失败</exception>
        /// <exception cref="HttpRequestException">http请求失败</exception>
        /// <exception cref="UnexpectedException">其它可能的错误</exception>
        public Tuple <string, long> SearchFile(string mediaId)
        {
            this.checkAndRefreshToken();

            try
            {
                var mediaInfo = new Dictionary <string, string>()
                {
                    { "mediaId", mediaId }
                };
                var cipherMediaInfo = m_crypto.Encrypt(AESCrypto.ToBytes(new JsonWriter().Write(mediaInfo)));
                var param           = new Dictionary <string, object>()
                {
                    { "buin", m_buin },
                    { "appId", m_appId },
                    { "encrypt", cipherMediaInfo }
                };
                var client = new HttpClient();
                var rsp    = client.Post(this.apiSearchFile(), param, HttpContentTypes.ApplicationJson, this.tokenQuery());

                Helper.CheckHttpStatus(rsp);
                var body = rsp.StaticBody <Dictionary <string, object> >(overrideContentType: HttpContentTypes.ApplicationJson);
                Helper.CheckApiStatus(body);

                var    decryptBuffer = m_crypto.Decrypt(Helper.GetEncryptJsonValue(body));
                var    existsInfo    = new JsonReader().Read <Dictionary <string, object> >(AESCrypto.ToString(decryptBuffer));
                object name;
                object size;
                if (!existsInfo.TryGetValue("name", out name) ||
                    name is string == false ||
                    ((string)name).Length == 0 ||
                    !existsInfo.TryGetValue("size", out size) ||
                    ((size is int && (int)size > 0) == false && (size is long && (long)size > 0) == false))
                {
                    throw new ParamParserException("invalid file info", null);
                }
                return(new Tuple <string, long>((string)name, Convert.ToInt64(size)));
            }
            catch (WebException e)
            {
                throw new HttpRequestException(0, e.Message, e);
            }
            catch (Exception e)
            {
                if (e is GeneralEntAppException)
                {
                    throw e;
                }
                else
                {
                    throw new UnexpectedException(e.Message, e);
                }
            }
        }
예제 #7
0
        public void AESCrypto_TamperData_AreNotEqual()
        {
            var sut      = new AESCrypto();
            var expected = Guid.NewGuid().ToString();
            var cipher   = sut.EncryptData(expected);

            cipher[0]++;
            var actual = sut.DecryptDataToString(cipher);

            Assert.NotEqual(expected, actual);
        }
예제 #8
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="address">目标服务器地址,"ip:port"的形式</param>
 /// <param name="buin">企业号</param>
 /// <param name="appId">AppId</param>
 /// <param name="encodingAesKey">encodingAesKey</param>
 public AppClient(string address, int buin, string appId, string encodingAesKey)
 {
     if (address.Length == 0 || buin == 0 || appId.Length == 0 || encodingAesKey.Length == 0)
     {
         throw new ArgumentException();
     }
     m_addr   = address;
     m_buin   = buin;
     m_appId  = appId;
     m_crypto = new AESCrypto(appId, encodingAesKey);
 }
예제 #9
0
        //登录信息
        private object LoginRequestDecodeParser(byte[] bytes)
        {
            byte[] messageBytes = bytes;

            messageBytes = SnappySharp.Uncompress(messageBytes);

            messageBytes = AESCrypto.Decrypt(messageBytes, SecretKey, SecretVector);

            string jsonStr = Encoding.UTF8.GetString(messageBytes);

            return(JsonConvert.DeserializeObject(jsonStr, typeof(LoginRequest)));
        }
예제 #10
0
        //返回商店物品列表
        private byte[] ShopListResponseEncodeParser(object message)
        {
            string jsonStr = JsonConvert.SerializeObject(message, Formatting.None);

            byte[] messageBytes = Encoding.UTF8.GetBytes(jsonStr);

            messageBytes = AESCrypto.Encrypt(messageBytes, SecretKey, SecretVector);

            messageBytes = SnappySharp.Compress(messageBytes);

            return(messageBytes);
        }
예제 #11
0
        public void AskAESKey()
        {
            byte[] msg = new byte[128];
            Steam.Read(msg, 0, msg.Length);


            byte[] data = Server.RSACrypto.RSADecrypt(msg);
            ShareKey = data.Skip(0).Take(32).ToArray();
            ShareIv  = data.Skip(32).Take(16).ToArray();

            AESCrypto = new AESCrypto(ShareKey, ShareIv);
        }
예제 #12
0
    /// <summary>
    /// 집 정보 저장 하기
    /// </summary>
    /// <param name="SaveData"></param>
    public void Save(State_Player SaveData)
    {
        string GameInfoPath = Application.persistentDataPath + PlayerDataName;

        BinaryFormatter bf   = new BinaryFormatter();
        FileStream      file = File.Create(GameInfoPath);

        string jsonStr = JsonUtility.ToJson(SaveData);
        string aes     = AESCrypto.AESEncrypt128(jsonStr);

        bf.Serialize(file, aes);
        file.Close();
    }
예제 #13
0
        private void DecryptButton_Click(object sender, RoutedEventArgs e)
        {
            if (ReceivedMessagesListView.SelectedItems.Count < 1)
            {
                MessageBox.Show("U have to select a message first!", "Warning!", MessageBoxButton.OK,
                                MessageBoxImage.Information);
            }
            else if (ReceivedMessagesListView.SelectedItems.Count > 1)
            {
                MessageBox.Show("U can only read one message!", "Warning!", MessageBoxButton.OK,
                                MessageBoxImage.Information);
            }
            else
            {
                MessageTextBlock.Visibility = Visibility.Visible;
                this.Height = 600;
                Message msg         = (Message)ReceivedMessagesListView.SelectedItem;
                var     fromUserPuK = msg.From.PuK;
                var     currUserPvk = currUser.PvK;
                var     file1       = msg.File1;
                var     file2       = msg.File2;
                var     file3       = msg.File3;
                var     IV          = msg.IV;
                var     key         = RSACrypto.DecryptBytes(file2, currUserPvk);
                MessageTextBlock.Text = "\n\n########AES KEY DECRYPT ########\n\n";
                UnicodeEncoding _encoder = new UnicodeEncoding();
                MessageTextBlock.Text += _encoder.GetString(key);

                var message = AESCrypto.DecryptStringFromBytes(file1, key, IV);
                MessageTextBlock.Text += "\n\n######## MESSAGE ########\n\n";
                MessageTextBlock.Text += message;


                var oldHash = RSACrypto.DecryptBytes(file3, currUserPvk);

                string strOldHash = Encoding.UTF8.GetString(oldHash);

                MessageTextBlock.Text += "\n\n######## Decrypted hash ########\n\n";
                MessageTextBlock.Text += strOldHash;


                if (BCrypt.CheckPassword(message, strOldHash))
                {
                    MessageTextBlock.Text += "\n\n######## HASHES ARE EQUAL! ########\n\n";
                }
                else
                {
                    MessageTextBlock.Text += "\n\n######## HASHES ARE NOT EQUAL! ########\n\n";
                }
            }
        }
예제 #14
0
        public ICryptoTransform CreateCryptoTransform(AESCrypto cryptoEnum)
        {
            switch (cryptoEnum)
            {
            case AESCrypto.Encrypt:
                return(mAESProvider.CreateEncryptor());

            case AESCrypto.Decrypt:
                return(mAESProvider.CreateDecryptor());

            default:
                throw new ArgumentException("AESCrypto 열거형 값이 올바르지 않습니다.");
            }
        }
예제 #15
0
 private Token getToken()
 {
     try
     {
         var now         = Helper.GetSecondTimeStamp();
         var timestamp   = AESCrypto.ToBytes(string.Format("{0}", now));
         var encryptTime = m_crypto.Encrypt(timestamp);
         var param       = new Dictionary <string, object>()
         {
             { "buin", m_buin },
             { "appId", m_appId },
             { "encrypt", encryptTime }
         };
         var client = new HttpClient();
         var rsp    = client.Post(this.apiGetToken(), param, HttpContentTypes.ApplicationJson);
         Helper.CheckHttpStatus(rsp);
         var body = rsp.StaticBody <Dictionary <string, object> >(overrideContentType: HttpContentTypes.ApplicationJson);
         Helper.CheckApiStatus(body);
         var    encrypt   = Helper.GetEncryptJsonValue(body);
         var    buffer    = m_crypto.Decrypt(encrypt);
         var    tokenInfo = new JsonReader().Read <Dictionary <string, object> >(AESCrypto.ToString(buffer));
         object accessToken;
         object expireIn;
         if (!tokenInfo.TryGetValue("accessToken", out accessToken) ||
             accessToken is string == false ||
             ((string)accessToken).Length == 0 ||
             !tokenInfo.TryGetValue("expireIn", out expireIn) ||
             expireIn is int == false ||
             (int)expireIn <= 0)
         {
             throw new ParamParserException("invalid token or expireIn", null);
         }
         return(new Token((string)accessToken, now, (int)expireIn));
     }
     catch (WebException e)
     {
         throw new HttpRequestException(0, e.Message, e);
     }
     catch (Exception e)
     {
         if (e is GeneralEntAppException)
         {
             throw e;
         }
         else
         {
             throw new UnexpectedException(e.Message, e);
         }
     }
 }
예제 #16
0
        public static void Main()
        {
            //pruebasMetodo1();
            string textoPlano = "Texto para encriptar";
            string textoClave = "Esto es una clave";


            string encriptado = AESCrypto.Encrypt(textoPlano, textoClave);

            Console.WriteLine("Texto plano: {0}", textoPlano);
            Console.WriteLine("Encrypted: {0}", encriptado);
            string desencriptado = AESCrypto.Decrypt(encriptado, textoClave);

            Console.WriteLine("Desencriptado: {0}", desencriptado);
            Console.ReadKey();
        }
        public ActionResult Decrypt(string secret, string HMacToken)
        {
            string msg = string.Empty;
            bool   isValidQueryString = TamperProofQueryString.ValidateQueryString(secret, HMacToken, out msg);

            if (isValidQueryString)
            {
                string plainText = "The Magic Words are Squeamish Ossifrage";
                string response  = "";
                if (string.IsNullOrEmpty(secret))
                {
                    response = "No secret? Sorry, bad request!";
                    ViewBag.DecryptedText           = response;
                    HttpContext.Response.StatusCode = 400;
                    return(View());
                }
                try
                {
                    byte[] encryptedBytes = CryptoHelper.ConvertHexStringToByteArray(secret);
                    response = AESCrypto.AES_DecryptToString(encryptedBytes);

                    if (plainText.Equals(response, StringComparison.OrdinalIgnoreCase))
                    {
                        //Valid padding and valid plain text
                        HttpContext.Response.StatusCode = 200;
                    }
                    else
                    {
                        //Valid padding, but incorrect format")
                        HttpContext.Response.StatusCode = 404;
                    }
                }
                catch (CryptographicException cex)
                {
                    //Invalid padding (Exception message: "Padding is invalid and cannot be removed.")
                    HttpContext.Response.StatusCode = 403;
                    response = cex.Message;
                }
                ViewBag.DecryptedText = response;
                return(View());
            }
            else
            {
                ViewBag.ErrorMessage = msg;
                return(View("AccessDenied"));
            }
        }
예제 #18
0
    /// <summary>
    /// 플레이어 데이터 저장
    /// </summary>
    public void Save_Player_Data()
    {
        Save(state_Player);

#if UNITY_ANDROID
        GoogleManager.Instance.isPopup = false;
        GoogleManager.Instance.Player_Data_Save();
#elif UNITY_IOS
        CloudOnceManager.Instance.isSave = false;

        string jsonStr = JsonUtility.ToJson(DataManager.Instance.state_Player);
        string aes     = AESCrypto.AESEncrypt128(jsonStr);

        CloudVariables.Player_Data = aes;

        Cloud.OnCloudSaveComplete += CloudOnceManager.Instance.CloudeSave;

        Cloud.Storage.Save();
#endif
    }
예제 #19
0
        public void Test()
        {
            using (var aesCrypto = new AESCrypto())
            {
                aesCrypto.Initialize(new Dictionary <string, object>
                {
                    { "Key", "awVFRYPeTTrA9T7OOzaAFUvu8I/ZyYjAtIzEjCmzzYw=" },
                    { "IV", "7cFxoI3/k1wxN9P6rEyR/Q==" }
                });
                var plainText = "SmartSql";

                var cipherText  = aesCrypto.Encrypt(plainText);
                var decryptText = aesCrypto.Decrypt(cipherText);
                Assert.Equal(plainText, decryptText);
                cipherText  = aesCrypto.Encrypt(plainText);
                decryptText = aesCrypto.Decrypt(cipherText);
                Assert.Equal(plainText, decryptText);
                cipherText  = aesCrypto.Encrypt(plainText);
                decryptText = aesCrypto.Decrypt(cipherText);
                Assert.Equal(plainText, decryptText);
            }
        }
예제 #20
0
    /// <summary>
    /// 자기 정보 가져오기
    /// </summary>
    /// <returns></returns>
    public State_Player Load_Player()
    {
        string       InfoPath       = Application.persistentDataPath + PlayerDataName;
        State_Player playerInfoSave = new State_Player();

        if (File.Exists(InfoPath))
        {
            BinaryFormatter bf   = new BinaryFormatter();
            FileStream      file = File.Open(InfoPath, FileMode.Open);
            var             str  = (string)bf.Deserialize(file);
            file.Close();

            if (!string.IsNullOrEmpty(str))
            {
                string aes = AESCrypto.AESDecrypt128(str);

                var data = JsonUtility.FromJson <State_Player>(aes);

                playerInfoSave = data;
            }
        }
        else
        {
            BinaryFormatter bf   = new BinaryFormatter();
            FileStream      file = File.Create(InfoPath);
            State_Player    data = new State_Player();

            playerInfoSave = data;

            string jsonStr = JsonUtility.ToJson(playerInfoSave);
            string aes     = AESCrypto.AESEncrypt128(jsonStr);

            bf.Serialize(file, aes);
            file.Close();
        }

        return(playerInfoSave);
    }
예제 #21
0
    public void Player_Data_Load(string str)
    {
        DialogManager.GetInstance().Close(null);

        if (isPopup)
        {
            GameObject obj = UnityEngine.Object.Instantiate <GameObject>(Resources.Load("Prefabs/data_load_confirm") as GameObject);
            DialogManager.GetInstance().show(obj, false);
        }


        string aes = AESCrypto.AESDecrypt128(str);

        var data = JsonUtility.FromJson <State_Player>(aes);

        DataManager.Instance.state_Player = data;

        DataManager.Instance.Save_Player_Data();

        Language.GetInstance().Set((SystemLanguage)DataManager.Instance.state_Player.LocalData_LanguageId);

        Reload();
    }
예제 #22
0
    public void CloudeLoad(bool success)
    {
        Cloud.OnCloudLoadComplete -= CloudeLoad;

        Debug.Log(success ? "로드 성공 " : "로드 실패");

        if (!success)
        {
            return;
        }


        string str = CloudVariables.Player_Data;


        if (str != "")
        {
            if (!isPopup)
            {
                DialogManager.GetInstance().Close(null);
            }

            var aes  = AESCrypto.AESDecrypt128(str);
            var data = JsonUtility.FromJson <State_Player>(aes);

            DataManager.Instance.state_Player = data;

            DataManager.Instance.Save_Player_Data();

            Language.GetInstance().Set((SystemLanguage)DataManager.Instance.state_Player.LocalData_LanguageId);

            Main obj = FindObjectOfType(typeof(Main)) as Main;
            obj.Reload();
        }

        isSave = true;
    }
예제 #23
0
        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="msg">Message对象</param>
        /// <exception cref="AESCryptoException">加解密失败</exception>
        /// <exception cref="ParamParserException">参数解析失败</exception>
        /// <exception cref="HttpRequestException">http请求失败</exception>
        /// <exception cref="UnexpectedException">其它可能的错误</exception>
        public void SendMsg(Message msg)
        {
            this.checkAndRefreshToken();

            try
            {
                Console.WriteLine(msg.ToJson());
                var cipherText = m_crypto.Encrypt(AESCrypto.ToBytes(msg.ToJson()));
                var param      = new Dictionary <string, object>()
                {
                    { "buin", m_buin },
                    { "appId", m_appId },
                    { "encrypt", cipherText }
                };
                var client = new HttpClient();
                var rsp    = client.Post(this.apiSendMsg(), param, HttpContentTypes.ApplicationJson, query: this.tokenQuery());
                Helper.CheckHttpStatus(rsp);
                var body = rsp.StaticBody <Dictionary <string, object> >(overrideContentType: HttpContentTypes.ApplicationJson);
                Helper.CheckApiStatus(body);
            }
            catch (WebException e)
            {
                throw new HttpRequestException(0, e.Message, e);
            }
            catch (Exception e)
            {
                if (e is GeneralEntAppException)
                {
                    throw e;
                }
                else
                {
                    throw new UnexpectedException(e.Message, e);
                }
            }
        }
예제 #24
0
        public override void handlePOSTRequest(HttpProcessor p, StreamReader inputData)
        {
            Console.WriteLine("POST request: {0}", p.http_url);

            var compnents = p.http_url.Split('?');

            if (compnents.Length != 2)
            {
                Console.WriteLine("invalid url compnents: {0}", compnents.ToString());
                p.writeFailure();
                return;
            }

            var reqUri = compnents[0];

            if (!reqUri.Equals(Uri))
            {
                p.writeFailure();
                return;
            }
            var queryPath = compnents[1];
            var queryDict = new Dictionary <string, string>();

            foreach (var statement in queryPath.Split("&&".ToCharArray()))
            {
                var elements = statement.Split('=');
                if (elements.Length == 2)
                {
                    queryDict[elements[0]] = elements[1];
                }
            }

            var    data       = inputData.ReadToEnd();
            var    jsonReader = new JsonReader();
            var    reqJson    = jsonReader.Read <Dictionary <string, object> >(data);
            object toBuin;
            object toApp;
            object encrypt;

            if (!reqJson.TryGetValue("toBuin", out toBuin) ||
                toBuin is int == false ||
                (int)toBuin <= 0 ||
                !reqJson.TryGetValue("toApp", out toApp) ||
                toApp is string == false ||
                ((string)toApp).Length == 0 ||
                !reqJson.TryGetValue("encrypt", out encrypt) ||
                encrypt is string == false ||
                ((string)encrypt).Length == 0)
            {
                Console.WriteLine("invalid toBuin or toApp or encrypt");
                p.writeFailure();
                return;
            }

            var toBuinValue  = (int)toBuin;
            var toAppValue   = (string)toApp;
            var encryptValue = (string)encrypt;

            string timeStamp;
            string nonce;
            string signature;

            if (!queryDict.TryGetValue("timestamp", out timeStamp) ||
                timeStamp == null ||
                !queryDict.TryGetValue("nonce", out nonce) ||
                nonce == null ||
                !queryDict.TryGetValue("msg_signature", out signature) ||
                signature == null)
            {
                Console.WriteLine("invalid timestamp or nonce or msg_signature");
                p.writeFailure();
                return;
            }

            if (toBuinValue != Buin || !toAppValue.Equals(AppId))
            {
                Console.WriteLine("buin or appId is not matched");
                p.writeFailure();
                return;
            }

            var mySignature = Signature.GenerateSignature(Token, timeStamp, nonce, encryptValue);

            if (!signature.Equals(mySignature))
            {
                Console.WriteLine("signature is not matched");
                p.writeFailure();
                return;
            }

            var decryptContent = m_crypto.Decrypt(encryptValue);
            //var msg = new SessionMessage().FromJson(AESCrypto.ToString(decryptContent));
            var msg = new ReceiveMessage().FromJson(AESCrypto.ToString(decryptContent));

            switch (msg.MsgType)
            {
            case Message.MessageTypeImage:
            {
                var msgBody = msg.MsgBody.ToImageBody();
                m_appClient.DownloadFile(msgBody.MediaId, OutDir);
            }
            break;

            case Message.MessageTypeFile:
            {
                var msgBody = msg.MsgBody.ToFileBody();
                m_appClient.DownloadFile(msgBody.MediaId, OutDir);
            }
            break;

            default:
                break;
            }

            Console.WriteLine(msg.ToString());
            Console.WriteLine("packageId: {0}", msg.PackageId);

            p.writeSuccess();
            p.outputStream.WriteLine(msg.PackageId);
        }
        public MainResult ChangeMasterKey(string clearTextPassword)
        {
            if (String.IsNullOrEmpty(clearTextPassword))
            {
                return new MainResult
                       {
                           Success      = false,
                           ErrorMessage = "Password cannot be null"
                       }
            }
            ;
            bool   success         = true;
            string error           = "";
            var    masterKeyResult = RetrieveHashedMasterKeyBase64();

            if (!masterKeyResult.MainResult.Success)
            {
                success = false;

                error = masterKeyResult.MainResult.ErrorMessage;
            }
            else
            {
                try
                {
                    bool isNew = false;
                    if (!File.Exists(Global.DataFileLocation))
                    {
                        File.WriteAllText(Global.DataFileLocation, null);
                        isNew = true;
                    }
                    var unlockDataFileResult = UnlockFile
                                               (
                        filename: Global.DataFileLocation,
                        isNew: isNew
                                               );
                    if (!unlockDataFileResult.Success)
                    {
                        success = false;
                        error   = unlockDataFileResult.ErrorMessage;
                    }
                    else
                    {
                        byte[] encryptedDataBytes = null;
                        try
                        {
                            encryptedDataBytes = File.ReadAllBytes(Global.DataFileLocation);
                        }
                        catch { }
                        if (encryptedDataBytes == null)
                        {
                            success = false;
                            error   = "Error while reading data";
                        }
                        else if (encryptedDataBytes.Length != 0)
                        {
                            byte[] decryptedDataBytes = new AESCrypto().Decrypt(encryptedDataBytes, masterKeyResult.Data);
                            if (decryptedDataBytes == null)
                            {
                                success = false;
                                error   = "Error while decrypting data";
                            }
                            else
                            {
                                var changePasswordResult = StoreMasterKey(clearTextPassword);
                                if (!changePasswordResult.Success)
                                {
                                    success = false;
                                    error   = changePasswordResult.ErrorMessage;
                                }
                                else
                                {
                                    masterKeyResult = RetrieveHashedMasterKeyBase64();
                                    if (!masterKeyResult.MainResult.Success)
                                    {
                                        success = false;
                                        error   = masterKeyResult.MainResult.ErrorMessage;
                                    }
                                    else
                                    {
                                        decryptedDataBytes = new AESCrypto().Encrypt(decryptedDataBytes, masterKeyResult.Data);
                                        if (decryptedDataBytes == null)
                                        {
                                            success = false;
                                            error   = "An error occured during data encryption";
                                        }
                                        else
                                        {
                                            bool save = true;
                                            try
                                            {
                                                File.WriteAllBytes(Global.DataFileLocation, decryptedDataBytes);
                                            }
                                            catch { save = false; }
                                            if (!save)
                                            {
                                                success = false;
                                                error   = "An error occured while saving data";
                                            }
                                            var lockResult = LockFile(Global.DataFileLocation);
                                            if (!lockResult.Success)
                                            {
                                                success = false;
                                                error   = lockResult.ErrorMessage;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            var changePasswordResult = StoreMasterKey(clearTextPassword);
                            if (!changePasswordResult.Success)
                            {
                                success = false;
                                error   = changePasswordResult.ErrorMessage;
                            }
                            else
                            {
                                var lockResult = LockFile(Global.DataFileLocation);
                                if (!lockResult.Success)
                                {
                                    success = false;
                                    error   = lockResult.ErrorMessage;
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    success = false;
                    error   = ex.ToString();
                }
            }
            return(new MainResult
            {
                Success = success,
                ErrorMessage = error
            });
        }
    }
        public DataResult <List <ProcessModel> > RetrieveData()
        {
            bool   success           = true;
            string error             = "";
            List <ProcessModel> list = null;

            try
            {
                var masterKeyResult = RetrieveHashedMasterKeyBase64();
                if (!masterKeyResult.MainResult.Success)
                {
                    success = false;
                    error   = masterKeyResult.MainResult.ErrorMessage;
                }
                else
                {
                    string masterKeyBase64 = masterKeyResult.Data;
                    //1st time loading just returns empty list
                    if (!File.Exists(Global.DataFileLocation))
                    {
                        list = new List <ProcessModel>();
                    }
                    else
                    {
                        var unlockDataFileResult = UnlockFile(Global.DataFileLocation);
                        if (!unlockDataFileResult.Success)
                        {
                            success = false;
                            error   = unlockDataFileResult.ErrorMessage;
                        }
                        else
                        {
                            byte[] encryptedDataBytes = null;
                            try
                            {
                                encryptedDataBytes = File.ReadAllBytes(Global.DataFileLocation);
                            }
                            catch { }

                            LockFile(Global.DataFileLocation);

                            if (encryptedDataBytes == null)
                            {
                                success = false;
                                error   = "Error while reading data";
                            }
                            //if data is empty, just return empty list
                            else if (encryptedDataBytes.Length == 0)
                            {
                                list = new List <ProcessModel>();
                            }
                            else
                            {
                                byte[] decryptedDataBytes = new AESCrypto().Decrypt(encryptedDataBytes, masterKeyBase64);
                                if (decryptedDataBytes == null)
                                {
                                    success = false;
                                    error   = "Error while decrypting data";
                                }
                                else
                                {
                                    var deserializationResult = DeserializeData(BitHelpers.ConvertBytesToString(decryptedDataBytes));
                                    if (!deserializationResult.MainResult.Success)
                                    {
                                        success = false;
                                        error   = deserializationResult.MainResult.ErrorMessage;
                                    }
                                    else
                                    {
                                        list = deserializationResult.Data;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                success = false;
                error   = ex.Message;
            }
            return(new DataResult <List <ProcessModel> >
            {
                Data = list,
                MainResult = new MainResult
                {
                    Success = success,
                    ErrorMessage = error
                }
            });
        }
        public MainResult StoreData(List <ProcessModel> list)
        {
            if (list == null)
            {
                return new MainResult
                       {
                           Success      = false,
                           ErrorMessage = "List is null"
                       }
            }
            ;
            bool   success = true;
            string error   = "";

            try
            {
                //it'll be used for the initial store.
                if (!File.Exists(Global.DataFileLocation))
                {
                    File.WriteAllText(Global.DataFileLocation, null);
                }


                //if zero, it doesn't need to be encrypted
                if (list.Count == 0)
                {
                    var unlockResult = UnlockFile(Global.DataFileLocation);
                    if (!unlockResult.Success)
                    {
                        success = false;
                        error   = unlockResult.ErrorMessage;
                    }
                    else
                    {
                        bool save = true;
                        try
                        {
                            File.WriteAllText(Global.DataFileLocation, null);
                        }
                        catch { save = false; }
                        if (!save)
                        {
                            success = false;
                            error   = "An error occured while saving data";
                        }
                        else
                        {
                            var lockResult = LockFile(Global.DataFileLocation);
                            if (!lockResult.Success)
                            {
                                success = false;
                                error   = lockResult.ErrorMessage;
                            }
                        }
                    }
                }
                else
                {
                    var serializationResult = SerializeData(list);
                    if (!serializationResult.MainResult.Success)
                    {
                        success = false;
                        error   = serializationResult.MainResult.ErrorMessage;
                    }
                    else
                    {
                        string serializedJson = serializationResult.Data;

                        var masterKeyResult = RetrieveHashedMasterKeyBase64();
                        if (!masterKeyResult.MainResult.Success)
                        {
                            success = false;
                            error   = masterKeyResult.MainResult.ErrorMessage;
                        }
                        else
                        {
                            string masterKeyBase64 = masterKeyResult.Data;
                            byte[] encryptedData   = new AESCrypto().Encrypt(BitHelpers.ConvertStringToBytes(serializedJson), masterKeyBase64);
                            if (encryptedData == null)
                            {
                                success = false;
                                error   = "An error occured during data encryption";
                            }
                            else
                            {
                                var unlockDataResult = UnlockFile(Global.DataFileLocation);
                                if (!unlockDataResult.Success)
                                {
                                    success = false;
                                    error   = unlockDataResult.ErrorMessage;
                                }
                                else
                                {
                                    bool save = true;
                                    try
                                    {
                                        File.WriteAllBytes(Global.DataFileLocation, encryptedData);
                                    }
                                    catch { save = false; }
                                    if (!save)
                                    {
                                        success = false;
                                        error   = "An error occured while saving data";
                                    }
                                    var lockResult = LockFile(Global.DataFileLocation);
                                    if (!lockResult.Success)
                                    {
                                        success = false;
                                        error   = lockResult.ErrorMessage;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                success = false;

                error = ex.Message;
            }
            return(new MainResult
            {
                Success = success,
                ErrorMessage = error
            });
        }
예제 #28
0
 private void Awake()
 {
     instance = this;
 }
예제 #29
0
 public String EncryptToo(String plainText)
 {
     AESCrypto aes = new AESCrypto();
     var cipherText = aes.Encrypt(plainText);
     return cipherText + " | " + aes.Decrypt(cipherText);
 }
예제 #30
0
        //public PagoTarjeta(string formadepago,string FolioCliente, string FolioPagoTarjeta)
        public PagoTarjeta(string formadepago, string FolioCliente)
        {
            InitializeComponent();
            TipoDeFormaDePago = formadepago;
            for (int i = 0; i < App.MVProducto.ListaDelCarrito.Count; i++)
            {
                cantidad += App.MVProducto.ListaDelCarrito[i].Cantidad;
                decimal a = decimal.Parse(App.MVProducto.ListaDelCarrito[i].StrCosto);
            }
            for (int i = 0; i < App.MVProducto.ListaDelInformacionSucursales.Count; i++)
            {
                TotalEnvio   += App.MVProducto.ListaDelInformacionSucursales[i].CostoEnvio;
                TotalPagar   += App.MVProducto.ListaDelInformacionSucursales[i].Total.ToString("N2");
                subtotal     += App.MVProducto.ListaDelInformacionSucursales[i].Subtotal;
                TotalPropina += App.MVProducto.ListaDelInformacionSucursales[i].DPropina;
            }
            TotalPagar   = (decimal.Parse(TotalPagar) + TotalPropina).ToString("N2");
            UidOrden     = Guid.NewGuid();
            UidOrdenPago = Guid.NewGuid();

            App.MVCorreoElectronico.BuscarCorreos(UidPropietario: new Guid(App.Global1), strParametroDebusqueda: "Usuario");
            string ArchivoXml = "" +
                                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" +
                                "<P>\r\n  <business>\r\n" +
                                "    <id_company>Z937</id_company>\r\n" +
                                "    <id_branch>1050</id_branch>\r\n" +
                                "    <user>Z937SDUS1</user>\r\n" +
                                "    <pwd>09K1HT91B3</pwd>\r\n" +
                                "  </business>\r\n" +
                                "  <url>\r\n" +
                                "    <reference>" + UidOrdenPago.ToString() + "</reference>\r\n" +
                                "    <amount>" + TotalPagar + "</amount>\r\n" +
                                "    <moneda>MXN</moneda>\r\n" +
                                "    <canal>W</canal>\r\n" +
                                "    <omitir_notif_default>1</omitir_notif_default>\r\n" +
                                "    <st_correo>1</st_correo>\r\n" +
                                "    <mail_cliente>" + App.MVCorreoElectronico.CORREO + "</mail_cliente>\r\n" +
                                "    <datos_adicionales>\r\n" +
                                "      <data id=\"1\" display=\"false\">\r\n" +
                                "        <label>PRINCIPAL</label>\r\n" +
                                "        <value>" + FolioCliente + "</value>\r\n" +
                                "      </data>\r\n" +
                                "      <data id=\"2\" display=\"true\">\r\n" +
                                "        <label>Concepto:</label>\r\n" +
                                "        <value>Orden en GoDeliverix.</value>\r\n" +
                                "      </data>\r\n" +
                                "      <data id=\"3\" display=\"false\">\r\n" +
                                "        <label>Color</label>\r\n" +
                                "        <value>Azul</value>\r\n" +
                                "      </data>\r\n" +
                                "    </datos_adicionales>\r\n" +
                                "  </url>\r\n" +
                                "</P>\r\n";
            string    originalString = ArchivoXml;
            string    key            = "7AACFE849FABD796F6DCB947FD4D5268";
            AESCrypto o = new AESCrypto();
            string    encryptedString = o.encrypt(originalString, key);
            string    finalString     = encryptedString.Replace("%", "%25").Replace(" ", "%20").Replace("+", "%2B").Replace("=", "%3D").Replace("/", "%2F");

            string encodedString = HttpUtility.UrlEncode("<pgs><data0>9265655113</data0><data>" + encryptedString + "</data></pgs>");
            string postParam     = "xml=" + encodedString;

            var client  = new RestClient("https://bc.mitec.com.mx/p/gen");
            var request = new RestRequest(Method.POST);

            request.AddHeader("cache-control", "no-cache");
            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddParameter("application/x-www-form-urlencoded", postParam, ParameterType.RequestBody);

            IRestResponse response = client.Execute(request);
            var           content  = response.Content;

            //lblRespuesta.Text = o.decrypt(key, content);
            string decryptedString = o.decrypt(key, content);
            string str1            = decryptedString.Replace("<P_RESPONSE><cd_response>success</cd_response><nb_response></nb_response><nb_url>", "");
            string url             = str1.Replace("</nb_url></P_RESPONSE>", "");

            WVWebPay.Source = new UrlWebViewSource {
                Url = url
            };

            tiempo.Interval = 2000;
            tiempo.Elapsed += new ElapsedEventHandler(VerificaPago);
            tiempo.Start();
        }
        private string GenLigaPara(string id_company, string id_branch, string user, string pwd, string Referencia, decimal Importe,
                                   string moneda, string canal, string promocion, int intCorreo, string Vencimiento, string Correo, string Concepto, string semillaAES, string data0, string urlGen)
        {
            string url = string.Empty;

            string ArchivoXml = "" +
                                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" +
                                "<P>\r\n  " +
                                "  <business>\r\n" +
                                "    <id_company>" + id_company + "</id_company>\r\n" +
                                "    <id_branch>" + id_branch + "</id_branch>\r\n" +
                                "    <user>" + user + "</user>\r\n" +
                                "    <pwd>" + pwd + "</pwd>\r\n" +
                                "  </business>\r\n" +
                                "  <url>\r\n" +
                                "    <reference>" + Referencia + "</reference>\r\n" +
                                "    <amount>" + Importe + "</amount>\r\n" +
                                "    <moneda>" + moneda + "</moneda>\r\n" +
                                "    <canal>" + canal + "</canal>\r\n" +
                                "    <omitir_notif_default>1</omitir_notif_default>\r\n" +
                                "    <promociones>" + promocion + "</promociones>\r\n" +
                                "    <st_correo>" + intCorreo + "</st_correo>\r\n" +
                                "    <fh_vigencia>" + Vencimiento + "</fh_vigencia>\r\n" +
                                "    <mail_cliente>" + Correo + "</mail_cliente>\r\n" +
                                "    <datos_adicionales>\r\n" +
                                "      <data id=\"1\" display=\"true\">\r\n" +
                                "        <label>Concepto:</label>\r\n" +
                                "        <value>" + Concepto + "</value>\r\n" +
                                "      </data>\r\n" +
                                "      <data id=\"2\" display=\"false\">\r\n" +
                                "        <label>Color</label>\r\n" +
                                "        <value>Azul</value>\r\n" +
                                "      </data>\r\n" +
                                "    </datos_adicionales>\r\n" +
                                "  </url>\r\n" +
                                "</P>\r\n";
            string    originalString  = ArchivoXml;
            string    key             = semillaAES;
            AESCrypto aesCrypto       = new AESCrypto();
            string    encryptedString = aesCrypto.encrypt(originalString, key);
            string    finalString     = encryptedString.Replace("%", "%25").Replace(" ", "%20").Replace("+", "%2B").Replace("=", "%3D").Replace("/", "%2F");

            string encodedString = HttpUtility.UrlEncode("<pgs><data0>" + data0 + "</data0><data>" + encryptedString + "</data></pgs>");
            string postParam     = "xml=" + encodedString;

            var client  = new RestClient(urlGen);
            var request = new RestRequest(Method.POST);

            request.AddHeader("cache-control", "no-cache");
            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddParameter("application/x-www-form-urlencoded", postParam, ParameterType.RequestBody);

            IRestResponse response = client.Execute(request);
            var           content  = response.Content;

            string decryptedString = aesCrypto.decrypt(key, content);
            string str1            = decryptedString.Replace("<P_RESPONSE><cd_response>success</cd_response><nb_response></nb_response><nb_url>", "");

            url = str1.Replace("</nb_url></P_RESPONSE>", "");

            return(url);
        }