如何检查(加拿大)SIN是真正的SIN?

时间:2009-08-19 18:41:28

标签: validation

加拿大SIN相当于美国SSN。

要求算法检查任何给定的9位数字是否通过了Luhn validation的验证。

我遇到的问题是一些用户足够聪明,可以生成可以通过上述验证的假SIN,但SIN不会存在于政府数据库中。

因此,我要问的是我如何检查给定的SIN号码是否真实且实际由加拿大政府签发。您是否可以获得任何数据库/服务,或者您是否使用任何特殊算法来验证这一点?

非常感谢你。

5 个答案:

答案 0 :(得分:4)

这似乎是极不可能公开的数据。您可能需要成为政府机构才能查看SIN列表。

另外,正如上面提到的那样,任何验证SIN是否是可能的候选者的算法也可以用于制造通过暴力不合法的SIN。

答案 1 :(得分:2)

作为约翰和保罗答案的补充说明。如果存在生成SIN的算法和分配的SIN的数据库,则可以将两者组合以搜索并以相当短的顺序找到真实SIN,从而允许您收集所有活动SIN的列表。以伪代码方式,您可以使用...

foreach(SIN in SINGenerator)
{
    if(govtdatabase.verify(SIN) == true)
    { store into file as valid SIN }
}

答案 2 :(得分:2)

在我知道与SIN的起始3个数字和人的年龄有一定的相关性之前,我已经与SIN合作过。同样,有一些验证规则很像信用卡号(你已经注意到了)。

用那个说你为什么使用SIN号码?这是一个非常重要的信息 - 如果你有一个人的SIN号码你实际上是他们 - 并且在任何情况下都不应该被任何人使用用于政府相关目的!

其次,如果你有合法使用SIN号码,你熟悉PIPEDA吗?如果不是你应该!

答案 3 :(得分:1)

我不了解加拿大,但在荷兰这样的网络服务仅供政府相关组织,保险公司,医疗服务提供者等使用。

我现在正在使用这样的服务。这不仅仅是数字验证。它允许根据数字检索姓名,地址,出生日期等。

这种类似的东西不太公开。的 See also this privacy FAQ 即可。阅读。它还包含有关SIN的有效用途的信息。

答案 4 :(得分:1)

您要求退出安全功能; 您的客户必须在Taxation Corporation CRA(加拿大)或Irs(美国)注册代表客户。然后,您的客户将可以访问政府网站。根据要求输入罪,它会告诉您(1)是否有效,(2)如果您无权获得有关罪的信息 - 间接验证它,或(3)如果您代表客户现在存档对于有问题的罪。

请注意,这不是政府网站的预期用途,因此可能会引起他们的愤怒,但会起作用。