module IpAnonymizer

Constants

VERSION

Public Class Methods

hash_ip(ip, key:, iterations: 1) click to toggle source
# File lib/ip_anonymizer.rb, line 20
def self.hash_ip(ip, key:, iterations: 1)
  addr = IPAddr.new(ip.to_s)
  key_len = addr.ipv4? ? 4 : 16
  family = addr.ipv4? ? Socket::AF_INET : Socket::AF_INET6

  keyed_hash = OpenSSL::PKCS5.pbkdf2_hmac(addr.to_s, key, iterations, key_len, "sha256")
  IPAddr.new(keyed_hash.bytes.inject {|a, b| (a << 8) + b }, family).to_s
end
mask_ip(ip) click to toggle source
# File lib/ip_anonymizer.rb, line 9
def self.mask_ip(ip)
  addr = IPAddr.new(ip.to_s)
  if addr.ipv4?
    # set last octet to 0
    addr.mask(24).to_s
  else
    # set last 80 bits to zeros
    addr.mask(48).to_s
  end
end