/// <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)); }