从长字符串生成序列号

时间:2013-04-26 09:19:56

标签: java ios objective-c java-ee

我正在开发一个应用程序(iOS和Java),它需要一个部分来生成序列号以及从用户输入中读取它。

我的输出加密字符串看起来像十六进制数据(长字符串),如下所示:

"397cf2dbcb034c6c8e63120a211a78f1a628cfa2b36692b5efd3aff93219ca9457bde99765eab793a2f2be183082a702"

显然,用户阅读和重新输入非常困难。我正在寻找一个解决方案,从上面的字符串生成序列号类型字符串(如:xxxx-xxxx-xxxx-xxxx)。 (我必须能够解码序列号并检索应用程序内的长字符串)

2 个答案:

答案 0 :(得分:0)

Base-64编码怎么样?那将会和你一样好。这是base-64中该数据的编码:

echo "397cf2dbcb034c6c8e63120a211a78f1a628cfa2b36692b5efd3aff93219ca9457bde99765eab793a2f2be183082a702" | xxd -r -p | base64

OXzy28sDTGyOYxIKIRp48aYoz6KzZpK179Ov+TIZypRXvemXZeq3k6LyvhgwgqcC

答案 1 :(得分:0)

你必须使用那个大的哈希函数吗?鉴于它只是一个序列号,你可以使用更小的东西 - 像128位哈希?即使是十六进制,这也是合理的,而在64中,这是非常合理的。使用base-64,您将获得一个128位密钥,其形式为xxxxxx-xxxxxx-xxxx-xxxxxx