其实注册码的生成算法可以随意的,有很多种,现在就介绍一种简单的算法:
1. 取得机器码
对于手机app来说,一般以IMEI作为机器码,其为15个字节的字符串
2. 作HMAC-SHA1 运算
此算法是集摘要功能(SHA1)和加密功能(HMAC)为一体的算法。用于对任意长度的字串,给定一个密码作为参数,输出20个字节的结果。用公式表示为:
result = HMAC-SHA1 ( key, 原文)
其好处是,不限制在原文的长度,密码的长度,结果总是20字节。(实际密码最好长一些,比较用16个字节的密码)
// HMAC-MAC计算
String HMAC_SHA1_ALGORITHM = "HmacSHA1";
String key = keybuf.toString(); // 给定一个16长度的字符串
try
{
// get an hmac_sha1 key from the raw key bytes
SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(),
HMAC_SHA1_ALGORITHM);
// get an hmac_sha1 Mac instance and initialize with the signing key
Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
mac.init(signingKey);