汾
汾阳仲王
Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠:
小弟新手,这方面的经验不多,请有经验的人多多指点。
小弟现在有一个数码表的项目,具体的使用情况是这样的。数码表安装在用户家里,控制用户家里自来水的流通,如果数码表上没有了水量,
数码表就会关掉,用户要继续使用就需要到自来水公司所在的营业点购买水量,营业点有一个管理软件,管理软件根据用户的数码表编号和用户的
购买量生成一个数据码,用户只要带着这个数据码回到数码表上,把数据码输入到数码表上,用户的购买量就会输入进数码表,用户就可以继续用
水,数码表有分辨用户输入的数据码正确与否的功能,如果用户连续输入的数据码错误超过5次,数码表自锁,用户无法打开,只有找自来水公司的
管理人员才能打开。
小弟现在的问题是现在管理软件根据用户的数码表编号和用户的购买量要生成一个数据码的这个算法,数据码的长度是8位的阿拉伯数字,我
目前打算这样做:
1,在电脑上生成两个随机数的表,每个表有256个数据,范围在10000~~~99999之间,(两个表的数据也会保存到数码表中)
2,根据用户的购买量(每次购买,购买量最大999),把购买量拆开在上面两个表中查询2个数据,然后再根据每个用户交易次数的不同,再在
上面表中查询1个数据,这样根据3个数据组合成一个数据A,最后的数据A再和购买量组合成一个8位的数据B。
3,用这个8位的数据B和用户的编号(每个用户的编号也是8位的)再进行运算得到最后的数据码C。
这是管理软件上的流程,等数码表接收到用户输入的数据码后,执行相应的反算法,过程如下:
1,根据用户输入的数据码C和用户的编号执行反运算计算出上面的8位数据B,
2,再从数据B根据组合取出购买量和数据A,
3,这时数码表根据购买量和用户交易次数执行与管理软件中2步骤相同的运算得到一个数据D,
4,验证数据D和数据A是否相同,如果相同,本次充值有效。
各位大侠可以先看看我的这个思路可不可行,这样做的安全行怎样,容不容易被破掉,或者那位大侠有更好的方法,望多多指点,小弟不胜感激!
现在小弟的问题是这样的,管理软件中的第3步用一个8位的数据B和用户的编号(每个用户的编号也是8位的)再进行运算得到最后的一个8位的数
据码C,小弟自己写了一些算法,结果在运算的过程中有时候会出现数据码C大于8位的情况(由于实际使用的原因,小于8位可以在数据前补0来补齐,大于是不允许的),请各位大侠指点一个算法啊,小弟真心感谢了!
另外,小弟这样的思路有没有什么漏洞,有漏洞请一定指出,分不够可以另开贴再加。
小弟新手,这方面的经验不多,请有经验的人多多指点。
小弟现在有一个数码表的项目,具体的使用情况是这样的。数码表安装在用户家里,控制用户家里自来水的流通,如果数码表上没有了水量,
数码表就会关掉,用户要继续使用就需要到自来水公司所在的营业点购买水量,营业点有一个管理软件,管理软件根据用户的数码表编号和用户的
购买量生成一个数据码,用户只要带着这个数据码回到数码表上,把数据码输入到数码表上,用户的购买量就会输入进数码表,用户就可以继续用
水,数码表有分辨用户输入的数据码正确与否的功能,如果用户连续输入的数据码错误超过5次,数码表自锁,用户无法打开,只有找自来水公司的
管理人员才能打开。
小弟现在的问题是现在管理软件根据用户的数码表编号和用户的购买量要生成一个数据码的这个算法,数据码的长度是8位的阿拉伯数字,我
目前打算这样做:
1,在电脑上生成两个随机数的表,每个表有256个数据,范围在10000~~~99999之间,(两个表的数据也会保存到数码表中)
2,根据用户的购买量(每次购买,购买量最大999),把购买量拆开在上面两个表中查询2个数据,然后再根据每个用户交易次数的不同,再在
上面表中查询1个数据,这样根据3个数据组合成一个数据A,最后的数据A再和购买量组合成一个8位的数据B。
3,用这个8位的数据B和用户的编号(每个用户的编号也是8位的)再进行运算得到最后的数据码C。
这是管理软件上的流程,等数码表接收到用户输入的数据码后,执行相应的反算法,过程如下:
1,根据用户输入的数据码C和用户的编号执行反运算计算出上面的8位数据B,
2,再从数据B根据组合取出购买量和数据A,
3,这时数码表根据购买量和用户交易次数执行与管理软件中2步骤相同的运算得到一个数据D,
4,验证数据D和数据A是否相同,如果相同,本次充值有效。
各位大侠可以先看看我的这个思路可不可行,这样做的安全行怎样,容不容易被破掉,或者那位大侠有更好的方法,望多多指点,小弟不胜感激!
现在小弟的问题是这样的,管理软件中的第3步用一个8位的数据B和用户的编号(每个用户的编号也是8位的)再进行运算得到最后的一个8位的数
据码C,小弟自己写了一些算法,结果在运算的过程中有时候会出现数据码C大于8位的情况(由于实际使用的原因,小于8位可以在数据前补0来补齐,大于是不允许的),请各位大侠指点一个算法啊,小弟真心感谢了!
另外,小弟这样的思路有没有什么漏洞,有漏洞请一定指出,分不够可以另开贴再加。