将id编码为数字和字母?

时间:2013-01-21 18:11:06

标签: ruby

我想将id编码为包含数字和大写字母的唯一字符串,如下所示:

40 => A5TY8

但是

41 => Y7HEG

41的输出与40' s A5TY9的输出完全不同。

怎么做?

1 个答案:

答案 0 :(得分:2)

我想告诉你关于摘要的所有内容..但是看到你的评论我觉得你想要这样的东西

https://github.com/namick/obfuscate_id

或者更好的是更通用的

https://github.com/patdeegan/integer-obfuscator

您也可以使用可重复的Base64对其进行编码

http://ruby-doc.org/stdlib-1.9.3/libdoc/base64/rdoc/Base64.html

请注意,您可能希望使用urlsafe_encode64,因此您不会拥有/ n和其他内容

所以你可以做点什么

require "base64"

original = 41

converted = Base64.urlsafe_encode64("41")
converted_for_display = converted.tr('^A-Za-z0-9', '')
# => "NDE"

reversed = Base64.urlsafe_decode64(converted)

您还可以加密应该使其唯一且可逆的数字,但速度更慢且更麻烦,但您可以选择任何您想要的键