示例#1
0
        public void LoadProductKey(string productkey)
        {
            HROne.CommonLib.Crypto crypto = new HROne.CommonLib.Crypto(symProvEnum);
            string preProductKey          = getPreProductKey(productkey);


            string[] parts = preProductKey.Split(new char[] { '-' });
            if (parts.Length != 3)
            {
                throw new Exception("InvalidProductKey");
            }
            string sSerial      = parts[0];
            string sCompanyUser = parts[1];
            string sFeature     = parts[2];

            m_SerialNo = Convert.ToUInt16(ConvertNumberFromBase64String(sSerial));

            ushort numCompaniesUsers = Convert.ToUInt16(ConvertNumberFromBase64String(sCompanyUser));

            m_NumOfCompanies = (ushort)(numCompaniesUsers / 100);
            m_NumOfUsers     = (ushort)(numCompaniesUsers % 100);

            byte featureFlag = ((byte)ConvertNumberFromBase64String(sFeature));

            m_IsPayroll         = (featureFlag & FLAG_PAYROLL) == FLAG_PAYROLL;
            m_IsTaxation        = (featureFlag & FLAG_TAXATION) == FLAG_TAXATION;
            m_IsLeaveManagement = (featureFlag & FLAG_LEAVE) == FLAG_LEAVE;
            m_IsESS             = (featureFlag & FLAG_ESS) == FLAG_ESS;
            m_IsAttendance      = (featureFlag & FLAG_Attendance) == FLAG_Attendance;
            m_IsCostCenter      = (featureFlag & FLAG_CostCenter) == FLAG_CostCenter;
            m_IsTraining        = (featureFlag & FLAG_Training) == FLAG_Training;
        }
示例#2
0
        public static string DecryptQueryString(HttpSessionState session, string QueryString)
        {
            if (QueryString.StartsWith("?"))
            {
                QueryString = QueryString.Substring(1);
            }
            if (session["EncryptQueryString"] != null)
            {
                if (session["EncryptQueryString"].Equals(true))
                {
                    if (!string.IsNullOrEmpty(QueryString))
                    {
                        string tmpQueryString = HttpUtility.UrlDecode(QueryString);
                        if (tmpQueryString.Length % 4 != 0)
                        {
                            return(QueryString);
                        }

                        System.Text.RegularExpressions.Regex regExBase64 = new System.Text.RegularExpressions.Regex(@"[0-9a-zA-Z\+/=]{20,}");
                        if (!regExBase64.IsMatch(tmpQueryString))
                        {
                            return(QueryString);
                        }

                        //if (((string)value).Contains(" "))
                        //    return value;
                        //if (((string)value).Contains("(") || ((string)value).Contains(")"))
                        //    return value;
                        byte[] bytIn;
                        try
                        {
                            bytIn = Convert.FromBase64String(tmpQueryString);
                        }
                        catch (Exception ex)
                        {
                            System.Diagnostics.Debug.WriteLine(ex.Message);
                            return(QueryString);
                        }
                        if (bytIn.Length % 16 != 0)
                        {
                            return(QueryString);
                        }

                        HROne.CommonLib.Crypto crypto = new HROne.CommonLib.Crypto(HROne.CommonLib.Crypto.SymmProvEnum.Rijndael);
                        try
                        {
                            string newQueryString = crypto.Decrypting(tmpQueryString, "0123456789abcdef");
                            return(newQueryString);
                        }
                        catch
                        {
                            return(QueryString);
                        }
                    }
                }
            }
            return(QueryString);
        }
示例#3
0
 private string getPreProductKey(string productkey)
 {
     HROne.CommonLib.Crypto crypto = new HROne.CommonLib.Crypto(symProvEnum);
     foreach (ProductLicenseType value in Enum.GetValues(typeof(ProductLicenseType)))
     {
         try
         {
             string preProductKey = crypto.Decrypting(base32.ConvertBase32ToBase64(productkey), value.ToString());
             m_ProductType = value;
             return(preProductKey);
         }
         catch
         {
         }
     }
     return(string.Empty);
 }
示例#4
0
        public string getProductFeatureCode(DatabaseConnection dbConn)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append(FEATURE_CODE_MAX_EMPLOYEE + "=" + m_CompanyDBMaxEmployee.ToString() + ";");
            int defaultMaxQuotaMB = 0;

            if (!int.TryParse(ESystemParameter.getParameter(dbConn, ESystemParameter.PARAM_CODE_DEFAULT_MAX_INBOX_SIZE_MB), out defaultMaxQuotaMB))
            {
                defaultMaxQuotaMB = 0;
            }
            builder.Append(FEATURE_CODE_MAX_INBOX_SIZE_MB + "=" + (defaultMaxQuotaMB > m_CompanyDBInboxMaxQuotaMB ? defaultMaxQuotaMB.ToString() : m_CompanyDBInboxMaxQuotaMB.ToString()) + ";");
            builder.Append(FEATURE_CODE_AUTOPAYMPF_HAS_HSBCHASE + "=" + (m_CompanyDBAutopayMPFFileHasHSBCHASE ? "Y" : "N") + ";");
            builder.Append(FEATURE_CODE_AUTOPAYMPF_HAS_OTHERS + "=" + (m_CompanyDBAutopayMPFFileHasOthers ? "Y" : "N") + ";");
            HROne.CommonLib.Crypto crypto = new HROne.CommonLib.Crypto(HROne.CommonLib.Crypto.SymmProvEnum.RC2);
            return(crypto.Encrypting(builder.ToString(), HROne.ProductLicense.ProductLicenseType.HROneSaaS.ToString()));
        }
示例#5
0
        private void SetDatabaseConfig(XmlElement databaseConfigRootNode, DatabaseConfig dbConfig)
        {
            XmlDocument config = databaseConfigRootNode.OwnerDocument;

            databaseConfigRootNode.AppendChild(config.CreateElement("name"));
            databaseConfigRootNode["name"].InnerText = dbConfig.name;
            databaseConfigRootNode.AppendChild(config.CreateElement("dbtype"));
            if (dbConfig.DBType.Equals(DBTypeEmun.MSSQL))
            {
                HROne.CommonLib.Crypto crypto = new HROne.CommonLib.Crypto(HROne.CommonLib.Crypto.SymmProvEnum.Rijndael);

                databaseConfigRootNode["dbtype"].InnerText = "MSSQL";
                databaseConfigRootNode.AppendChild(config.CreateElement("ConnectionString"));

                System.Data.SqlClient.SqlConnectionStringBuilder connStringBuilder = new System.Data.SqlClient.SqlConnectionStringBuilder(dbConfig.ConnectionString);
                connStringBuilder.Password = crypto.Encrypting(connStringBuilder.Password, keyString);
                databaseConfigRootNode["ConnectionString"].InnerText = connStringBuilder.ConnectionString;
            }
        }
示例#6
0
        private DatabaseConfig LoadDatabaseConfig(XmlElement node)
        {
            HROne.CommonLib.Crypto crypto = new HROne.CommonLib.Crypto(HROne.CommonLib.Crypto.SymmProvEnum.Rijndael);

            string strDBType           = string.Empty;
            string strConnectionString = string.Empty;
            string strName             = string.Empty;

            if (node["dbtype"] != null)
            {
                strDBType = node["dbtype"].InnerText;
            }
            if (node["name"] != null)
            {
                strName = node["name"].InnerText;
            }
            if (node["ConnectionString"] != null)
            {
                strConnectionString = node["ConnectionString"].InnerText;
            }

            if (strDBType.Equals("MSSQL"))
            {
                DatabaseConfig config = new DatabaseConfig();
                config.DBType = DBTypeEmun.MSSQL;
                config.name   = strName;
                System.Data.SqlClient.SqlConnectionStringBuilder connStringBuilder = new System.Data.SqlClient.SqlConnectionStringBuilder(strConnectionString);
                try
                {
                    connStringBuilder.Password        = crypto.Decrypting(connStringBuilder.Password, keyString);
                    connStringBuilder.ApplicationName = "HROneWeb";
                    config.ConnectionString           = connStringBuilder.ConnectionString;
                }
                catch
                {
                }
                return(config);
            }
            else
            {
                return(null);
            }
        }
示例#7
0
        public string GetProductKey()
        {
            string sSerialNo    = ConvertNumberToBase64String(m_SerialNo);
            string sProductCode = ProductType.ToString();
            string sCompanyUser = ConvertNumberToBase64String((ushort)(m_NumOfCompanies * 100 + m_NumOfUsers));
            //string sTrialPeriod = ConvertNumberToBase64String
            //    ((ushort)((m_IsTrialKey ? FLAG_TRIAL_KEY : (ushort)0) + m_TrialDays));
            string sFeature = ConvertNumberToBase64String
                                  ((byte)((m_IsPayroll ? FLAG_PAYROLL : (byte)0)
                                          | (m_IsTaxation ? FLAG_TAXATION : (byte)0)
                                          | (m_IsLeaveManagement ? FLAG_LEAVE : (byte)0)
                                          | (m_IsESS ? FLAG_ESS : (byte)0)
                                          | (m_IsAttendance ? FLAG_Attendance : (byte)0)
                                          | (m_IsCostCenter ? FLAG_CostCenter : (byte)0)
                                          | (m_IsTraining ? FLAG_Training : (byte)0)
                                          ));

            string preProductKey = sSerialNo + "-" + sCompanyUser + "-" + sFeature;

            HROne.CommonLib.Crypto crypto = new HROne.CommonLib.Crypto(symProvEnum);
            string productKey             = crypto.Encrypting(preProductKey, sProductCode);
            string decryptProductKey      = crypto.Decrypting(productKey, sProductCode);

            string base32Key = base32.ConvertBase64ToBase32(productKey);

            return(base32Key);

            //string sSerialNo = base32.encodeb32(m_SerialNo, 4);
            //string sProductCode = base32.ReverseEncodeString(m_ProductCode);
            //string sCompanyUser = base32.encodeb32(m_NumOfCompanies * 100 + m_NumOfUsers, 3);
            //string sTrialPeriod = base32.encodeb32
            //    (m_IsTrialKey ? FLAG_TRIAL_KEY : 0 + m_TrialDays, 2);
            //string sFeature = base32.encodeb32
            //    ((m_IsPayroll ? FLAG_PAYROLL : 0)
            //    | (m_IsTaxation ? FLAG_TAXATION : 0)
            //    | (m_IsLeaveManagement ? FLAG_LEAVE : 0)
            //    | (m_IsESS ? FLAG_ESS : 0)
            //    | (m_IsAttendance ? FLAG_Attendance : 0), 2);

            //string preProductKey = sSerialNo + sProductCode + sCompanyUser + sTrialPeriod + sFeature;
            //return base32.CheckSum(preProductKey) + preProductKey;
        }
示例#8
0
        public static string URLwithEncryptQueryString(HttpSessionState session, string URL)
        {
            if (session["EncryptQueryString"] != null)
            {
                if (session["EncryptQueryString"].Equals(true))
                {
                    int QueryStartQuestionMarkPos = URL.IndexOf('?');
                    if (QueryStartQuestionMarkPos >= 0)
                    {
                        string originalQueryString = URL.Substring(QueryStartQuestionMarkPos + 1);

                        if (!string.IsNullOrEmpty(originalQueryString))
                        {
                            HROne.CommonLib.Crypto crypto = new HROne.CommonLib.Crypto(HROne.CommonLib.Crypto.SymmProvEnum.Rijndael);
                            string newQueryString         = crypto.Encrypting(originalQueryString, "0123456789abcdef");
                            URL = URL.Replace(originalQueryString, System.Web.HttpUtility.UrlEncode(newQueryString));
                        }
                    }
                }
            }
            return(URL);
        }