我公司创建和销售的商业软件目前使用 Base-64 编码的 RSA 加密许可证密钥。结果大约有 90 个字符长。使用起来笨重且笨拙,并且容易出现用户错误。有些用户不太了解复制和粘贴,并尝试手动键入密钥。
我想用一种创建较小密钥的方法替换当前算法,例如我看到其他一些程序使用的 30 个字符的密钥。此外,我注意到许多软件供应商使用仅使用数字和大写字符的密钥,这使得它们使用起来更加方便。
我可以使用什么算法来生成嵌入用户名、产品 ID 和版本号的安全密钥,其中生成的许可证密钥不超过 30 个字符并且仅使用数字和大写字符?
(如果重要的话,我们正在使用 Java 进行编码。)
所以......这是一个开始:
public String createLicenseKey(String customerName, String productId, String versionNumber) {
// what goes here?
return licenseKey;
}
String key = createLicenseKey("Max Headroom", "ABCD", "4");
// key should now be in format AAAAAA-AAAAAA-AAAAAA-AAAAAA-AAAAAA