0

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

我的输出加密字符串看起来像这样的十六进制数据(长字符串):

"397cf2dbcb034c6c8e63120a211a78f1a628cfa2b36692b5efd3aff93219ca9457bde99765eab793a2f2be183082a702"

显然,这对于用户来说是很难阅读和重新输入的。我正在寻找一种从上述字符串生成序列号类型字符串(如:xxxx-xxxx-xxxx-xxxx)的解决方案。(我必须能够解码序列号并取回应用程序内的长字符串)

4

2 回答 2

0

Base-64 编码怎么样?这将与您将获得的一样好。这是base-64中该数据的编码:

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

OXzy28sDTGyOYxIKIRp48aYoz6KzZpK179Ov+TIZypRXvemXZeq3k6LyvhgwgqcC
于 2013-04-27T05:39:32.457 回答
0

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

于 2013-06-21T17:45:40.173 回答