在密码散列方案中,当比较两个密码哈希值时,我知道我应该使用慢速等于函数,无论参数如何都会花费相同的时间。
我在" Why is the SlowEquals function important to compare hashed passwords?"中了解了慢速平等的重要性。
Ruby中是否存在这样的功能?如果没有,我可以使用什么宝石?
答案 0 :(得分:1)
是的,Ruby中有常量字符串比较库,请参阅fast_secure_compare。但是你不应该用它来对付两个密码哈希值。
考虑到这样的情况,当鲍勃试图暴露出爱丽丝的密码时,会发生什么?
由于两个哈希值往往差别很大,即使两个原始密码相似,使用from django.db.models import Count
last_hour_delta = datetime.now()-timedelta(hours=1)
ChatRoom.objects.annotate(visitors_count=Count('room_traffic__visitor')).filter(private=False).filter(created_at__gt=last_hour_delta).order_by('-visitors_count')
进行比较也会在一开始就失败。
另一方面,如果两个哈希值最后只有一个不同的字符,则它不会反映两个原始密码的相似性,而鲍勃仍然对Alice的密码一无所知。