Генерация случайной строки без SecureRandom - PullRequest
2 голосов
/ 07 августа 2010

Мне нужно сгенерировать границу для загрузки из нескольких частей

  post << "--#{BOUNDARY}\r\n"
  post << "Content-Disposition: form-data; name=\"datafile\"; filename=\"#{filename}\"\r\n"
  post << "Content-Type: text/plain\r\n"
  post << "\r\n"
  post << file
  post << "\r\n--#{BOUNDARY}--\r\n"

Граница должна быть случайной строкой (отсутствует в файле).

В рельсах я мог быdo SecureRandom.hex (10)

Кому я могу это сделать без загрузки activesupport?

Ответы [ 3 ]

5 голосов
/ 07 августа 2010

Если вам нужна произвольная буквенно-цифровая строка, используйте что-то вроде:

rand(10000000000000).floor.to_s(36)

Это сделает случайное число (измените множитель, чтобы сделать строку длиннее) и представит его в виде числа 36 (10 цифр + 26 букв).

Для строки Base64 вы можете сделать что-то вроде

require 'base64'
Base64.encode64(rand(10000000000000).to_s).chomp("=\n")

Если вам нужны строки фиксированной длины, поиграйте с произвольным диапазоном чисел, который вы предоставляете, используя что-то вроде 1000000 + rand (10000000).

0 голосов
/ 11 июля 2013

, если вы хотите случайную буквенно-цифровую строку, вы можете сделать, как показано ниже

 o =  [('a'..'z'),('A'..'Z'),('0'..'9')].map{|i| i.to_a}.flatten
 string  =  (0...50).map{ o[rand(o.length)]  }.join

Это также сгенерирует буквенно-цифровую случайную строку

rand(36**length).to_s(36)

Вы также можете передать «длину» для генерации размера случайной строки. Пример 8 или 10

0 голосов
/ 07 августа 2010

В прошлый раз я использовал MD5 на ранде, как это:

require 'md5'
random_string = MD5.md5(rand(1234567).to_s).to_s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...