zoukankan      html  css  js  c++  java
  • 转换SID到byte数组

           /*
             <Domain/Machine>\Administrator
        ' Pos : 0 | 1 | 2 3 4 5 6 7 | 8 9 10 11 | 12 13 14 15 | 16 17 18 19 | 20 21 22 23 | 24 25 26 27
        ' Value: 01 | 05 | 00 00 00 00 00 05 | 15 00 00 00 | 06 4E 7D 7F | 11 57 56 7A | 04 11 C5 20 | F4 01 00 00
        ' str : S- 1 | | -5 | -21 | -2138918406 | -2052478737 | -549785860 | -500


        ' SID anatomy:
        >> ' Byte Position
        >> ' 0 : SID Structure Revision Level (SRL)
        >> ' 1 : Number of Subauthority/Relative Identifier
        >> ' 2-7 : Identifier Authority Value (IAV) [48 bits]
        >> ' 8-x : Variable number of Subauthority or Relative Identifier (RID)
        >> [32 bits]
             */
            public byte[] ConvertSID2Bytes(string sid)
            {

                sid = sid.ToLower().Replace("s", "");

                string[] list = sid.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
                StringBuilder sb = new StringBuilder();
                sb.Append(String.Format("{0:X2}", Convert.ToInt32(list[0])));
                sb.Append(String.Format("{0:X2}", Convert.ToInt32(list.Length - 2)));
                sb.Append(String.Format("{0:X12}", Convert.ToInt32(list[1])));

                Console.WriteLine(sb.ToString());

                for (int i = 2; i < list.Length; i++)
                {
                    string tmp = String.Format("{0:X8}", Convert.ToUInt32(list[i]));
                    for (int j = 6; j >= 0; j -= 2)
                    {
                        sb.Append(tmp.Substring(j, 2));
                    }
                }

                string obj = sb.ToString();
                byte[] ret = new byte[obj.Length / 2];

                for (int i = 0; i < obj.Length; i += 2)
                {
                    ret[i / 2] = Convert.ToByte(obj.Substring(i, 2), 16);
                }

                return ret;
            }

  • 相关阅读:
    数据查询表,列名对比
    Oracle ORA06550:错误
    设计模式——单例模式
    MS SQL 建表SQL的脚本
    WinForm 清空界面控件值的小技巧
    WinForm系列——控件的输入限制
    C++学习笔记——常量定义
    PLSQL 调试触发器
    static类为什么不能用sealed关键字修饰
    C++虚函数解析(转)
  • 原文地址:https://www.cnblogs.com/juqiang/p/1699882.html
Copyright © 2011-2022 走看看