用 hashcash 打击垃圾邮件
2007-03-29 12:40:11 来源:WEB开发网核心提示: 另外,一旦生成戳记,用 hashcash 打击垃圾邮件(4),我不希望每一个想给我发送邮件的垃圾邮件制造者都能共享它,所以,假定给出了前 6 个域,为了生成一个通过期望数目的前导零进行散列的的戳记,hashcash 采用了以下两个额外步骤(或者至少建议它们应该作为协议的一部分): 首先,戳
另外,一旦生成戳记,我不希望每一个想给我发送邮件的垃圾邮件制造者都能共享它。所以,hashcash 采用了以下两个额外步骤(或者至少建议它们应该作为协议的一部分):
首先,戳记携带一个日期。用户可能会决定认为比特定期限更早的戳记是非法的。
其次,hashcash 客户机可能(并且多半应该)实现一个 double spend 数据库。
在 double spend 数据库中,每一个戳记都只能使用一次;如果第二次收到它,那么就认为它是非法的(非常类似于邮票在使用后会被做标记)。具体地说,hashcash(版本 1)戳记类似于下面的代码:
1:bits:date:resource:ext:salt:suffix
戳记包括 7 个域。
版本号(版本 0 更简单,但是有一些局限性)。
声明的比特值。如果戳记没有真正地使用声明的前导零比特进行散列,那么它就是非法的。
生成戳记的日期(和时间)。可以认为当前时间之后的戳记以及那些在很久以前的戳记是非法的。
戳记为哪个资源而生成。可能是一个电子邮件地址,但是也可能是一个 URI 或者其他命名的资源。
特定应用程序可能需要的扩展。任何附加的数据都可以放置在这里,但是,在到目前为止的使用中,这个域通常是空的。
将该戳记与其他所有人为相同的资源在同一日期生成的戳记区别开来的随机因子(salt)。例如,两个不同的人可以合情合理地在同一天向我的同一个地址发送电子邮件。他们不应该由于我使用了 double spend 数据库而无法发送成功。但是,如果他们每个人都使用一个随机因子,那么完整戳记将是不同的。
后缀是算法真正起作用的部分。假定给出了前 6 个域,为了生成一个通过期望数目的前导零进行散列的的戳记,minter 必须尝试很多连续的后缀值。
更多精彩
赞助商链接