当前位置:编程学习 > C#/ASP.NET >>

C# IC卡验证密码总是返回4(未验证密码)

string key = "ffffffffffff"; byte [] b= Encoding.ASCII.GetBytes(key); st = rf_load_key(idev, 4, 5, b); MessageBox.Show("装载密码:" + st); st = rf_authentication(idev,4,5); MessageBox.Show("验证密码:" + st); 
有没有c#的demo 参考下 ,或者发到979891946@qq.com,谢谢了 --------------------编程问答-------------------- 找了C#的demo 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public int icdev;
        int st;
        byte[] snr = new byte[5];
        private void button1_Click(object sender, EventArgs e)
        {
            icdev = Program.rf_init(0, 9600);
            if (icdev > 0)
            {
                listBox1.Items.Add("Com Connect success!");
                byte[] status = new byte[30];
                st = Program.rf_get_status(icdev, status);
                //lbHardVer.Text=System.Text.Encoding.ASCII.GetString(status);
                listBox1.Items.Add(System.Text.Encoding.Default.GetString(status));
                Program.rf_beep(icdev, 25);
            }
            else
                listBox1.Items.Add("Com Connect failed!");

            byte[] key = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
            int mode = 0;
            int sector = 0;
            for (int i = 0; i < 16; i++)
            {
                st = Program.rf_load_key(icdev, mode, sector, key);
                if (st != 0)
                {
                    string s1 = Convert.ToString(sector);
                    listBox1.Items.Add(s1 + " sector rf_load_key error!");
                }
                //else
                //{
                //   listBox1.Items.Add("rf_load_key seccess!");
                //}
                sector++;
            }
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            int sector = 3;
            st = Program.rf_card(icdev, 0, snr);    //寻卡
            if (st != 0)
            {
                listBox1.Items.Add("rf_card error");
            }
            else
            {
                byte[] snr1 = new byte[8];
                listBox1.Items.Add("rf_card right!");
                Program.hex_a(snr, snr1, 4);
                listBox1.Items.Add(System.Text.Encoding.Default.GetString(snr1));
            }
            st = Program.rf_authentication(icdev, 0, sector);  //验证密码
            if (st != 0)
            {
                listBox1.Items.Add("rf_authentication error!");
            }
            else
            {
                listBox1.Items.Add("rf_authentication right!");
            }

            byte[] data = new byte[16];
            string databuff = "深圳明华澳汉科技";
            data = Encoding.Default.GetBytes(databuff);
            st = Program.rf_write(icdev, sector * 4 + 1, data);   //写数据
            if (st != 0)
            {
                listBox1.Items.Add("rf_write error!");
                listBox1.Items.Add(st.ToString());
            }
            else
            {
                listBox1.Items.Add("rf_write right!");
            }

            byte[] databuffer = new byte[32];
            st = Program.rf_read(icdev, sector * 4 + 1, databuffer);  //读数据
            if (st != 0)
            {
                listBox1.Items.Add("rf_read error!");
                listBox1.Items.Add(st.ToString());
            }
            else
            {
                listBox1.Items.Add("rf_read right!");
                listBox1.Items.Add(System.Text.Encoding.Default.GetString(databuffer));
            }

            byte[] keya = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
            byte[] keyb = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
            st = Program.rf_changeb3(icdev, sector, keya, 0, 0, 0, 1, 0, keyb);  //改密码
            if (st != 0)
            {
                listBox1.Items.Add("rf_changeb3 error!");
                listBox1.Items.Add(st.ToString());
            }
            else
            {
                listBox1.Items.Add("rf_changeb3 right!");
            }

            Program.rf_halt(icdev);
            Program.rf_beep(icdev, 50);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            st = Program.rf_exit(icdev);
            if (st == 0)
            {
                listBox1.Items.Add("断开连接!");
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            st = Program.rf_ctl_mode(icdev, 0);
            if (st != 0)
            {
                MessageBox.Show("设置控制模式失败!");
            }
            else
            {
                MessageBox.Show("控制模式: 计算机控制!");
            }

            st = Program.rf_CtlBackLight(icdev, 1);
            if (st != 0)
            {
                MessageBox.Show("打开LCD背光失败!");
            }
            else
            {
                MessageBox.Show("打开LCD背光!");
            }

            st = Program.rf_LcdClrScrn(icdev, 2);
            if (st != 0)
            {
                MessageBox.Show("LCD清屏失败!");
            }
            else
            {
                MessageBox.Show("LCD清屏!");
            }

            //st = Program.rf_DispMainMenu(icdev);
            //if (st != 0)
            //{
            //    MessageBox.Show("显示欢迎光临失败!");
            //}
            //else
            //{
            //    MessageBox.Show("欢迎光临!");
            //}

            st = Program.rf_DispLcd(icdev, 0, 0x01);
            if (st != 0)
            {
                MessageBox.Show("显示操作失败!");
            }
            else
            {
                MessageBox.Show("请刷卡!");
            }

            byte[] data = new byte[15];
            string databuff = "明华澳汉科技";
            data = Encoding.Default.GetBytes(databuff);
            st = Program.rf_DispInfo(icdev, 1, 0, data);
            if (st != 0)
            {
                MessageBox.Show("显示失败!");
            }
            else
            {
                MessageBox.Show("明华澳汉科技!");
            }

        }

        private void button5_Click(object sender, EventArgs e)
        {
            st = Program.rf_ctl_mode(icdev, 0);
            if (st != 0)
            {
                MessageBox.Show("设置控制模式失败!");
            }
            else
            {
                MessageBox.Show("控制模式: 计算机控制!");
            }

            byte[] disp_str = new byte[] { 0x00, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88 };
            //byte[] disp_str = new byte[10];
            //string databuff = "12345678";
            //disp_str = Encoding.Default.GetBytes(databuff);
            st = Program.rf_disp8(icdev, 8, disp_str);
        }

        private void button6_Click(object sender, EventArgs e)
        {
            st = Program.rf_card(icdev, 0, snr);    //寻卡
            if (st != 0)
            {
                listBox1.Items.Add("rf_card error");
            }
            else
            {
                byte[] snr1 = new byte[8];
                listBox1.Items.Add("rf_card right!");
                Program.hex_a(snr, snr1, 4);
                listBox1.Items.Add(System.Text.Encoding.Default.GetString(snr1));
            }

            byte[] resetData = new byte[256];
            byte[] rData = new byte[500];
            byte[] sendCmd = new byte[] { 0, 0, 0, 5,0,0x84,0,0,8}; //第四个字节为发送的命令长度
 
            st = Program.rf_pro_rst(icdev, resetData);
            if (st != 0)
            {
                listBox1.Items.Add("复位失败!");
            }
            else
            {
                Program.hex_a(resetData, rData, resetData[0]);  //将复位信息转换为ASC字符串存放在rData中
                listBox1.Items.Add(System.Text.Encoding.Default.GetString(rData)); 
            }

            Array.Clear(resetData, 0, 256);
            st = Program.rf_pro_trn(icdev, sendCmd, resetData);
            if (st != 0)
            {
                listBox1.Items.Add("取随机数失败!");
            }
            else
            {
                Array.Clear(rData, 0, 500);
                Program.hex_a(resetData, rData, resetData[3] + 4);
                listBox1.Items.Add(System.Text.Encoding.Default.GetString(rData));
            }
        }
        
    }
}
--------------------编程问答-------------------- 您好!现在您这个只能读8位的id,怎么读14位或者说别的位数啊。 --------------------编程问答-------------------- 那你把byte[] snr=new byte[16];
这样的长度改大一点试试吧,这个问题我也不太清楚
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,