带校验和的唯一静态长度ID

时间:2012-10-02 12:43:52

标签: php encryption encoding hash checksum

数据库中有用户具有自动增量ID(1,2,3,... 999999)。我需要的是从user_id生成一个随机的静态长度(例如8或10个字符)ID,可以将其解码回原始ID,就像哈希函数一样,但是可以反转,基本上看起来像编码/加密。无需安全性。为什么我需要这个?用户应在终端输入他的身份证并进行小额现金支付,因此,如果他的身份证号码为5656且他无意中输入6565,那么他的付款将转到6565的帐户,因为有一个帐户有这样的身份证。但是当他的ID是3783479238时,例如,37834792是5656的编码版本,后两位数字(38)是校验和(为了检查完整性,条形码或信用卡号码存在这种情况),那里无法为其他用户付费。

一个PHP函数/库会很棒,但是如果你有其他语言(c,java,无论什么)或者只是数学函数我都不会介意。

谢谢。

1 个答案:

答案 0 :(得分:0)

这取决于您希望检查的强度和长度:

  • 最简单的是,如果你将所有个别数字加在一起,那么该数字的模数为9.这是对信用卡号码进行的检查。
  • 在荷兰,11 check用于银行帐号和社会安全号码。这是荷兰语中的explanation,但你得到了数字。
  • 在一个40英尺的集装箱上有一个额外的数字,使集装箱号码也模数检查。你必须谷歌那个。