【问题标题】:How can I convert byte array data to a format that looks like a product key如何将字节数组数据转换为看起来像产品密钥的格式
【发布时间】:2019-01-30 17:38:38
【问题描述】:

我正在创建许可证软件密钥,目前我在加密过程后得到一个字节数组。如何将此字节数组(可能大小为 2000)转换为看起来像 xxxxx - xxxxx - xxxxx - xxxxx - xxxxx 的产品密钥,其中 x 可以是从大写 A-Z 到 0-9 的值?

我正在尝试在 c# 控制台应用程序中生成许可证密钥并验证生成的许可证。

var bytes = memoryStream.ToArray();
//memoryStream is a cryptostream and the size of the byte array can be around 2000

我希望将字节数组转换为格式良好的键,类似于我上面提到的格式。在过去的两周里,我一直坚持这一点。非常感谢任何帮助。

【问题讨论】:

  • How to mask string?的可能重复
  • @collenbrecht,这是我可能正在考虑使用的一种解决方法,但在验证密钥时需要额外的步骤。

标签: c# byte licensing


【解决方案1】:

尝试使用Convert.ToBase64String(byte[])。这将为您提供一个包含 A-Z、a-z、0-9 的字符串。然后您可以使用string.Substring 方法手动添加-

【讨论】:

  • 我试过了,但它包含我需要的其他字符。此外,生成的字符串超过了预期的 34 长度。
  • @Jabez,您可以用 1 个字节编码 1 个字符(A-Z,0-9)。所以你不能将 2000 个字节包装成 25 个字符的字符串。如果你想要一个短字符串,你可以从你的字节数组中获取一个哈希函数
【解决方案2】:

我建议你使用Guid

Guid.NewGuid();

Documentation about Guid

【讨论】:

  • Guid 效果很好,但是我的代码中使用了其他加密技术,导致大小超过 2000 的字节数组,因此问题将其转换为长度为 34 的字符串,如问题。
  • 使用 sha256 创建哈希
猜你喜欢
  • 1970-01-01
  • 2012-12-21
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多