Crypto::Bcrypt

class Crypto::Bcrypt

Overview

Pure Crystal implementation of the Bcrypt algorithm by Niels Provos and David Mazières, as presented at USENIX in 1999.

Refer to Crypto::Bcrypt::Password for a higher level interface.

About the Cost

Bcrypt, like the PBKDF2 or scrypt ciphers, are designed to be slow, so generating rainbow tables or cracking passwords is nearly impossible. Yet, computers are always getting faster and faster, so the actual cost must be incremented every once in a while. Always use the maximum cost that is tolerable, performance wise, for your application. Be sure to test and select this based on your server, not your home computer.

This implementation of Bcrypt is currently 50% slower than pure C solutions, so keep this in mind when selecting your cost. It may be wise to test with Ruby's bcrypt gem which is a binding to OpenBSD's implementation.

Last but not least: beware of denial of services! Always protect your application using an external strategy (eg: rate limiting), otherwise endpoints that verifies bcrypt hashes will be an easy target.

Defined in:

crypto/bcrypt.cr

Constant Summary

COST_RANGE = 4..31
DEFAULT_COST = 11
PASSWORD_RANGE = 1..51
SALT_SIZE = 16

Class Method Summary

Instance Method Summary

Class Method Detail

def self.hash_secret(password, cost = DEFAULT_COST) : StringSource

def self.new(password : String, salt : String, cost = DEFAULT_COST)Source

def self.new(password : Bytes, salt : Bytes, cost = DEFAULT_COST)Source

Instance Method Detail

def cost : Int32Source

def digestSource

def inspect(io)Source

def password : BytesSource

def salt : BytesSource

def to_s(io)Source

def to_sSource

def to_slice(*args, **options)Source

def to_slice(*args, **options, &block)Source

© 2012–2017 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.22.0/Crypto/Bcrypt.html

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部