继前篇:Licensing实例(二)
public
class
EncryptedLicense : License

...
{
private string _key;
private string _productInfo;
private ushort _serialNo;


/**//// <summary>
/// 许可证加密
/// </summary>
/// <param name="key">键值</param>
/// <param name="serialNo">序列号</param>
/// <param name="productInfo">产品信息</param>
public EncryptedLicense(string key, ushort serialNo, string productInfo)

...{
this._key = key;
this._serialNo = serialNo;
this._productInfo = productInfo;
}



/**//// <summary>
/// 检查
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static string Checksum(string input)

...{
int num1 = (input == null) ? 0 : EncryptedLicense.HashString(input);
return Math.Abs((int)(num1 % 1000)).ToString();
}


public override void Dispose()

...{
}


/**//// <summary>
/// 哈希
/// </summary>
/// <param name="szStr"></param>
/// <returns></returns>
private static int HashString(string szStr)

...{
int num1 = 5381;
for (int num3 = 0; num3 < szStr.Length; num3++)

...{
int num2 = szStr[num3];
num1 = ((num1 << 5) + num1) ^ num2;
}
return num1;
}


/**//// <summary>
/// 许可证键值
/// </summary>
public override string LicenseKey

...{
get

...{
return this._key;
}
}


/**//// <summary>
/// 产品信息
/// </summary>
public string ProductInfo

...{
get

...{
return this._productInfo;
}
}


/**//// <summary>
/// 序列号
/// </summary>
public ushort SerialNo

...{
get

...{
return this._serialNo;
}
}

}








































































































