C# 读取明华RF读卡器,验证密码不对,请帮忙,谢谢

rzmcm 2013-04-23 08:47:04
//初始化读卡器
Int16 icdev = IC.rf_init(1, 9600);
textBox1.Text = icdev.ToString();
if (icdev < 0)
{
MessageBox.Show("端口初始化失败,请检查接口线是否连接正确。", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
IC.rf_exit(icdev);
}

//寻卡
ulong snr;
Int16 st = IC.rf_card(icdev, 0, out snr);
if (st != 0)
{
MessageBox.Show("MCM寻卡失败", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
IC.rf_exit(icdev);
}
textBox2.Text = st.ToString();
textBox3.Text = "卡号:"+snr.ToString();

//装载密码
byte[] pwd = new byte[3] { 255, 255, 255 };
//Int16 lk = IC.rf_load_key(icdev, 0, 8, pwd);
Int16 lk = IC.rf_load_key(icdev, 0, 8, pwd);
if (lk != 0)
{
MessageBox.Show("装密码失败", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
IC.rf_exit(icdev);
}

//密码验证--前面都对,到这一步出问题了,请大侠们帮忙啊,一下两个,用哪个也不对。
//Int16 at = IC.rf_authentication(icdev, 0, 8);//0为验证模式,表示密码A;8表示8号扇区
Int16 at = IC.rf_authentication_2(icdev, 0, 8, 0);//验证8号扇区0号块
if (at != 0)
{
MessageBox.Show("验证密码失败", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
IC.rf_exit(icdev);
}

————————————————————————————————————
库函数如下:

//验证密码
[DllImport("mwrf32.dll", EntryPoint = "rf_authentication", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern Int16 rf_authentication(Int16 icdev, byte mode, byte SecNr);
//验证密码2
[DllImport("mwrf32.dll", EntryPoint = "rf_authentication_2", SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)]
public static extern Int16 rf_authentication_2(int icdev, byte mode, byte SecNr, Int16 blocknr);
...全文
921 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiayan88 2015-09-26
  • 打赏
  • 举报
回复
yashao1987 2015-09-26
  • 打赏
  • 举报
回复
不好意思写错了应该是int result = URF.rf_load_key(_icdev, 0, 8, hexkey );
yashao1987 2015-09-26
  • 打赏
  • 举报
回复
byte[] hexkey = new byte[6] { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; int result = URF.rf_load_key(_icdev, 0, 0, hexkey ); result = URF.rf_authentication(_icdev, 0, 8); rf_authentication_2我感觉你那个参数写的不对,验证八扇区0块,那个块是绝对块数应该为32,扇区数应该为你装载密码存储的扇区吧。我也还没有解决第二个函数,贴主要是解决了,记得我们交流一下吧~!~
wbg0508 2013-12-07
  • 打赏
  • 举报
回复
我现在遇到的问题更去了,用Web形式使用IC读写器,在客户机找不到,只能插到服务器上使用?这个问题怎么解决。。。总不能再从服务器拉根线,哈哈。。。
mjp1234airen4385 2013-08-08
  • 打赏
  • 举报
回复
写IC卡的孩子们伤不起呀。 曾经做过多家的读卡、写卡程序,有的厂家卡片不太稳定,伤不起。 问厂家也不了了之,没找出问题。 你自己找更费劲了。
heliminyongjiu 2013-08-08
  • 打赏
  • 举报
回复
我也遇到了这个问题,怎么解决呀
qwerlin 2013-05-03
  • 打赏
  • 举报
回复
我的程序也差不多,rf_authentication就是验证失败了!
yaotomo 2013-05-03
  • 打赏
  • 举报
回复
以前我做的

byte[] _Key = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; //12位密码,初始默认为FFFFFFFFFFFF

                                        string[] strArrayInfo = new string[3];
                                        bool bolIsReadSuccess = true;


                                        if (rf_load_key(icDev, byteCardFindMode, 1, _Key) != 0)
                                        {
                                            bolIsReadSuccess = false;
                                        }
                                        else
                                        {
                                            if (rf_authentication(icDev, byteCardPwdMode, 1) == 0)//进行验证
                                            {
                                                for (int i = 0; i < 3; i++)
                                                {
                                                    if (rf_read(icDev, (byte)(i + 4), _Data) == 0)//从第一扇区的1,2,3块(绝对地址4-6块)取数据
                                                    {
                                                        rf_decrypt(byteKey, _Data, 16, byteDecryptValue); //使用密钥将密文转换为明文,格式为byte数组
                                                        strArrayInfo[i] = Encoding.Default.GetString(byteDecryptValue); //将byte数组明文转换为字符串明文
                                                        strArrayInfo[i] = strArrayInfo[i].Trim();
                                                    }
                                                    else
                                                    {
                                                        bolIsReadSuccess = false;
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                bolIsReadSuccess = false;
                                            }
                                        }

qwerlin 2013-05-03
  • 打赏
  • 举报
回复
我也遇到密码验证失败,请问楼主解决了吗?
start1208ab 2013-04-23
  • 打赏
  • 举报
回复
读IC卡吗?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧