stlcours:>>或者实现一个软件注册机。
就是说,把id machine做公钥,注册码做私钥,还是反过来?
(2017-08-21 14:02) 
采用RSA算法实现注册码的基本原理
本文档只描述用户名+序列号、在线注册、激活码三种方式,其它方式不予考虑。
下面分别描述三种方式实现的基本原理:
一、 用户名+序列号
1. 生成一对公钥E和私钥D(供软件注册模板和注册机使用);
2. 软件供应商编写一个注册机,通过注册机将输入的用户名与私钥D加密码生成密码C(即:注册码);软件供应商将用户名及注册码提供给用户。
3. 用户安装软件后,输入用户名和注册码,软件注册模板采用公钥E对注册码解码后生成F(即:用户名);
4. 软件注册模板比较解码后的用户名F与输入的用户名,如果相等则用户合法,完成授权,否则授权失败。
二、在线注册
1. 生成一对公钥E和私钥D(供注册系统和注册模板使用);
2. 软件供应商将用户的凭证信息通过私钥D加密后生成F,并存储在特定的地方,比如说:存储在注册数据库中;
3. 用户安装软件后,输入用户特征信息后,软件注册模板采用公钥E对用户特征信息加密,形式成注册凭证C,通过网络发送到供应商的注册系统中。
4. 注册系统采用私钥D加密用户注册凭证C,生成F。通过F判断用户身份的有效性;
5. 注册系统将注册验证的结果通过私钥D加密后,通过网络发送给软件系统;
6. 软件注册模板采用公钥E对验证结果进行解密,根据结果来决定是否完成授权;
三、激活码
1. 生成一对公钥E和私钥D(供软件注册模板和注册机使用);
2. 用户安装软件后,软件注册模板提取用户机器的特定信息(如:MAC地址、CPU序列号、硬盘序列号等等),并通过其它的编码算法(如BASE64)生成一个申请码C;
3. 用户将申请码C发给软件供应商。软件供应商通过注册机采用私钥D加密申请码C后生成激活码F。软件供应商将激活码F发给用户。
4. 用户输入激活码F,软件注册模板采用公钥E对激活码F解码后生成G(即:用户机器特征信息),然后软件注册模板提取用户机器的特定信息后进行编码。将编码的结果与G进行比较,如果相等则用户合法,完成授权,否则授权失败。
摘自CSDN:
http://blog.csdn.net/charleslei/article/details/50551008