Sha256: 4b6cbda1424c1e8399be471c921470a8d5ad1efa1806f07ed91bb08fbfee12c3

Contents?: true

Size: 622 Bytes

Versions: 2

Compression:

Stored size: 622 Bytes

Contents

require 'digest/sha1'

SALT_LENGTH=30
ALPHA = ('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a

def hash_fn(str)
  Digest::SHA1.hexdigest str
end

def generate_salt
  (1..SALT_LENGTH).map{ALPHA.sample}.join
end

def salted_hash(str,salt)
  res = str
  100.times do
    res = hash_fn(res+salt)
  end
  res
end

def salty(str)
  salt = generate_salt

  res = salted_hash(str,salt)

  n = str.length
  res[0...n] + salt + res[n..-1]
end

def salty_eq(unhashed,hashed)
  n = unhashed.length
  salt = hashed[n,SALT_LENGTH]
  myhashed = hashed[0...n] + hashed[n+SALT_LENGTH..-1]

  myhashed == salted_hash(unhashed,salt)
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
salty-0.0.5 lib/salty.rb
salty-0.0.4 lib/salty.rb