Ejemplo n.º 1
0
        /// <summary>
        /// 加密
        /// </summary>
        /// <param name="data">要加密的字符串</param>
        /// <param name="key">密钥</param>
        /// <returns></returns>

        public static string XxTeaEncrypt(string data, string key)
        {
            try
            {
                if (data.Length == 0)
                {
                    throw new ArgumentException("Data must be at least 1 characater in length.");
                }
                uint[] k = FormatKey(key);
                if ((data.Length % 8) != 0)
                {
                    int num6 = (8 - (data.Length % 8)) - 1;
                    for (int j = 0; j <= num6; j++)
                    {
                        data = data + "\0";
                    }
                }
                //增加的
                else
                {
                    for (int j = 0; j <= 7; j++)
                    {
                        data = data + "\0";
                    }
                }
                ArrayList list = new ArrayList(data.Length);
                list.AddRange(Encoding.Unicode.GetBytes(data));
                string str    = "";
                uint[] v      = new uint[3];
                byte[] buffer = new byte[5];
                int    num5   = list.Count - 1;
                for (int i = 0; i <= num5; i += 8)
                {
                    int index = 0;
                    do
                    {
                        buffer[index] = ByteType.FromObject(list[i + index]);
                        index++;
                    }while (index <= 3);
                    v[0] = BitConverter.ToUInt32(buffer, 0);
                    int num4 = 0;
                    do
                    {
                        buffer[num4] = ByteType.FromObject(list[(i + 4) + num4]);
                        num4++;
                    }while (num4 <= 3);
                    v[1] = BitConverter.ToUInt32(buffer, 0);

                    code(v, k);
                    str = str + ConvertUintToHexString(v[0]) + ConvertUintToHexString(v[1]);
                }
                return(str.ToString());
            }
            catch (Exception)
            {
                //return "加密失败:"+ex.Message;
                return(string.Empty);
            }
        }
Ejemplo n.º 2
0
        public static String Oct(Object Number)
        {
            if (Number == null)
            {
                throw new ArgumentNullException("Number");
            }
            switch (ObjectType.GetTypeCode(Number))
            {
            case TypeCode.Byte:
                return(Oct(ByteType.FromObject(Number)));

            case TypeCode.Int16:
                return(Oct(ShortType.FromObject(Number)));

            case TypeCode.Boolean:
            case TypeCode.Char:
            case TypeCode.SByte:
            case TypeCode.UInt16:
            case TypeCode.Int32:
                return(Oct(IntegerType.FromObject(Number)));

            case TypeCode.Int64:
                return(Oct(LongType.FromObject(Number)));

            case TypeCode.UInt32:
            case TypeCode.UInt64:
            case TypeCode.Single:
            case TypeCode.Double:
            case TypeCode.Decimal:
                return(Oct(LongType.FromObject(Number)));

            case TypeCode.String:
                return(Oct(LongType.FromString
                               (StringType.FromObject(Number))));
            }
            throw new ArgumentException(S._("VB_InvalidNumber"), "Number");
        }
Ejemplo n.º 3
0
 public void FromObject_ThrowsOverflowException(object value)
 {
     Assert.Throws <OverflowException>(() => ByteType.FromObject(value));
 }
Ejemplo n.º 4
0
 public void FromObject_ThrowsInvalidCastException(object value)
 {
     Assert.Throws <InvalidCastException>(() => ByteType.FromObject(value));
 }
Ejemplo n.º 5
0
 public void FromObject_NotSupported(object value, byte expected)
 {
     Assert.Throws <InvalidCastException>(() => ByteType.FromObject(value));
 }
Ejemplo n.º 6
0
 public void FromObject(object value, byte expected)
 {
     Assert.Equal(expected, ByteType.FromObject(value));
 }
Ejemplo n.º 7
0
        // Inner version of "Print" and "Write".
        private static void Print(File file, Object[] Output,
                                  CultureInfo culture, bool print)
        {
            NumberFormatInfo nfi = culture.NumberFormat;

            if (Output == null)
            {
                return;
            }
            bool first = true;

            foreach (Object obj in Output)
            {
                if (!first && !print)
                {
                    file.Write(",");
                }
                else
                {
                    first = false;
                }
                if (obj == null)
                {
                    if (!print)
                    {
                        file.Write("#NULL#");
                    }
                    continue;
                }
                if (obj is TabInfo)
                {
                    file.Tab((TabInfo)obj);
                    continue;
                }
                else if (obj is SpcInfo)
                {
                    file.Space((SpcInfo)obj);
                    continue;
                }
                else if (obj is char[])
                {
                    file.Write(new String((char[])obj));
                    continue;
                }
                else if (obj is ErrObject)
                {
                    if (print)
                    {
                        file.Write(String.Format("Error {0}",
                                                 ((ErrObject)obj).Number));
                    }
                    else
                    {
                        file.Write(String.Format("#ERROR {0}#",
                                                 ((ErrObject)obj).Number));
                    }
                    continue;
                }
                switch (ObjectType.GetTypeCode(obj))
                {
                case TypeCode.DBNull:
                {
                    if (print)
                    {
                        file.Write("Null");
                    }
                    else
                    {
                        file.Write("#NULL#");
                    }
                }
                break;

                case TypeCode.Boolean:
                {
                    bool b = BooleanType.FromObject(obj);
                    if (print)
                    {
                        file.Write(b.ToString(culture));
                    }
                    else if (b)
                    {
                        file.Write("#TRUE#");
                    }
                    else
                    {
                        file.Write("#FALSE#");
                    }
                }
                break;

                case TypeCode.Byte:
                {
                    byte by = ByteType.FromObject(obj);
                    file.Write(by.ToString(nfi));
                }
                break;

                case TypeCode.Int16:
                {
                    short s = ShortType.FromObject(obj);
                    file.Write(s.ToString(nfi));
                }
                break;

                case TypeCode.Int32:
                {
                    int i = IntegerType.FromObject(obj);
                    file.Write(i.ToString(nfi));
                }
                break;

                case TypeCode.Int64:
                {
                    long l = LongType.FromObject(obj);
                    file.Write(l.ToString(nfi));
                }
                break;

                case TypeCode.Single:
                {
                    float f = SingleType.FromObject(obj, nfi);
                    file.Write(f.ToString(nfi));
                }
                break;

                case TypeCode.Double:
                {
                    double d = DoubleType.FromObject(obj, nfi);
                    file.Write(d.ToString(nfi));
                }
                break;

                case TypeCode.Decimal:
                {
                    Decimal dc = DecimalType.FromObject(obj, nfi);
                    file.Write(dc.ToString(nfi));
                }
                break;

                case TypeCode.DateTime:
                {
                    DateTime dt = DateType.FromObject(obj);
                    if (print)
                    {
                        file.Write(StringType.FromDate(dt) + " ");
                    }
                    else
                    {
                        String format;
                        long   dayTicks = dt.Ticks % TimeSpan.TicksPerDay;
                        if (dt.Ticks == dayTicks)
                        {
                            format = "T";
                        }
                        else if (dayTicks == 0)
                        {
                            format = "d";
                        }
                        else
                        {
                            format = "F";
                        }
                        file.Write(dt.ToString
                                       (format, culture.DateTimeFormat));
                    }
                }
                break;

                case TypeCode.String:
                {
                    file.Write(StringType.FromObject(obj));
                }
                break;

                default:
                {
                    Utils.ThrowException(5);                                            // ArgumentException.
                }
                break;
                }
            }
        }