Why does the SecureRandom#hex method double its length parameter n?
ruby
Solution
The method generates a random sequence of n bytes (cf. the `random_bytes` method), and then returns the base-16 representation of that sequence (which has two hex digits per byte).
This is also why the `base64` and `urlsafe_base64` methods return a string of length roughly 4n/3: they generate n bytes, and then perform the Base-64 encoding.
Problem
I came across the SecureRandom#hex method when trying to generate salts for passwords in a ruby on rails application. Why does it double the length parameter / insist that the returned string is even in length?