module Tripcode

Constants

SECRET
VERSION

Public Class Methods

hash(password) click to toggle source
# File lib/tripcode.rb, line 6
def self.hash(password)
  return "" if password.nil? || password.empty?
  password = password.encode('SHIFT_JIS', 'UTF-8', undef: :replace)
  password.gsub!('"', '"')
  password.gsub!('&', '&')
  password.gsub!('>', '>')
  password.gsub!('<', '&lt;')
  salt = (password.b + 'H.')[1..2]
  salt.gsub!(/[^\.-z]/, '.')
  salt.tr!(':;<=>?@[\\]^_`', 'ABCDEFGabcdef')
  return password.crypt(salt)[-10..-1].strip
end
parse(string, seed=SECRET) click to toggle source
# File lib/tripcode.rb, line 28
def self.parse(string, seed=SECRET)
  name, tripcode, secure_tripcode = string.split('#')
  tripcode = self.hash(tripcode)
  secure_tripcode = self.secure(secure_tripcode, seed)
  name = "" if name.nil?
  return name, tripcode, secure_tripcode
end
secure(password, seed=SECRET) click to toggle source
# File lib/tripcode.rb, line 19
def self.secure(password, seed=SECRET)
  return "" if password.nil? || password.empty?
  seed = Base64::decode64(seed)
  password = password.encode('SHIFT_JIS', 'UTF-8', undef: :replace)
  secure_tripcode = Digest::SHA1.hexdigest(password.b + seed)
  secure_tripcode = Base64::encode64([secure_tripcode].pack('H*'))
  return secure_tripcode[0..14]
end