Exemple #1
0
        /// <summary>
        /// 外部身份验证
        /// </summary>
        /// <param name="Key"></param>
        /// <returns></returns>
        public ApduMsg Auth(byte[] Key)
        {
            if (Key.Length != 8)
            {
                return(new ApduMsg("身份验证Key长度不正确"));
            }
            string RANDOMCMD = "0084000004";


            byte[] Random = SendStrCommand(RANDOMCMD);

            CPUCardLogHelper.AddLog("获取随机数:" + BitConverter.ToString(Random));

            if (Random.Length != 6)
            {
                return(new ApduMsg("返回随机数长度不正确"));
            }

            byte[] Randomdata = new byte[8];

            Array.Copy(Random, 0, Randomdata, 0, 4);

            List <byte> cmdList = new List <byte>();

            cmdList.AddRange(CPUCardHelper.ConverToBytes("00 82 00 00 08"));
            cmdList.AddRange(CPUCardHelper.Encrypt(Randomdata, Key));

            byte[] data = carder.SendCommand(cmdList.ToArray());

            CPUCardLogHelper.AddLog(LogTypeEnum.info, "身份验证接收", BitConverter.ToString(data));

            return(ApduMsg.GetApduByData(data));
        }