ET199加密方案——用户注册机制
来源:互联网 发布:ios看图软件 编辑:程序博客网 时间:2024/06/05 05:06
加密一词来源已久,自从人们希望对自己私人的信息得到保护开始,就有了加密这个概念。软件行业的加密是软件厂商为了保护软件开发的利益而采取的一种软件保护方式,加密的好坏直接影响到软件的销售。当前软件加密的方法多种多样,基本上来说可以分为不依赖硬件的加密方案和依赖特定硬件的的加密方案。就不依赖特定硬件的软加密来说,很多的共享软件都是采用序列号加密或者是许可证加密等等,而这种加密方式的用户名和序列号都是在您的计算机上完成的,这样就会给破解者可趁之机,给软件的合法使用造成巨大的隐患,本方案可有效的避免这种漏洞。
方案原理说明:
本方案示例,注册程序通过E199加密锁中的公钥对输入的用户名进行RSA私钥加密运算(1024位),产生注册码。主程序通过锁中的私钥对注册码解密,以此来验证用户注册的合法性,如果用户合法将启用高级功能。开发商可以根据这一方案实现软件使用版本的发布。
方案示例:
本说明文档中仅列举核心代码或函数,详细的代码设计,请参看方案源代码。所有操作均在插有ET199加密锁的状态下完成,并且加密锁属性都是出厂默认设置。
一、 运行注册机程序GenRegCode.exe
图4
输入用户名“zhangsan”,单击“算码”,将在“注册码”中显示出计算之后的注册码。复制注册码,当然如果记忆力足够好的话,也可以记下然后在主程序中手动敲入。
//公钥加密
int CGenRegCodeDlg::RSAEncode(BYTE* pbuf, int len)
{
DWORD dwRet;
int leng;
ET_CONTEXT etc;
BYTE tmpbuf[1+128];
// =================
//打开加密锁
if(OpenDog(&etc) != ET_S_SUCCESS) return -1;
//校验PIN码
if(ETVerifyPin(&etc, ET_DEFAULT_USER_PIN, ET_USER_PIN_LEN, ET_USER_PIN) != ET_S_SUCCESS) return -2;
memset(tmpbuf, 0, sizeof(tmpbuf));
tmpbuf[0] = Func_RsaEnc;
memcpy(tmpbuf+1, pbuf, len);
leng = sizeof(tmpbuf);
dwRet = ExecuteDog(&etc, "1000", tmpbuf, sizeof(tmpbuf), tmpbuf, &leng);
//关闭加密锁
ETClose(&etc);
if(dwRet == 0 && tmpbuf[0] == 0)
{
//返回数据
memcpy(pbuf, tmpbuf+1, leng);
//
return 0;
}
else
{
return -3;
}
}
二、 运行RegisterDemo.exe
图5
可以看到“本软件尚未注册”,目前程序还是试用版本,只具备“基本功能”,“高级功能”不可用。单击“软件注册”,弹出“软件注册”,输入正确用户名和注册码
图6
验证成功会提示“下次启动程序时验证注册是否合法”,如果下次启动后,“高级功能”可用,那么说明注册用户是合法的。
//私钥解密
BOOL CRegisterDemoDlg::RSADecode(BYTE* pbuf, int len)
{
DWORD dwRet;
int leng;
ET_CONTEXT etc;
BYTE tmpbuf[1+128];
// =================
//打开加密锁
if(OpenDog(&etc) != ET_S_SUCCESS) return FALSE;
//校验PIN码
if(ETVerifyPin(&etc, ET_DEFAULT_USER_PIN, ET_USER_PIN_LEN, ET_USER_PIN) != ET_S_SUCCESS) return FALSE;
memset(tmpbuf, 0, sizeof(tmpbuf));
tmpbuf[0] = Func_RsaDec;
memcpy(tmpbuf+1, pbuf, len);
leng = sizeof(tmpbuf);
dwRet = ExecuteDog(&etc, "1000", tmpbuf, sizeof(tmpbuf), tmpbuf, &leng);
//关闭加密锁
ETClose(&etc);
if(dwRet == 0 && tmpbuf[0] == 0)
{
//返回数据
memcpy(pbuf, tmpbuf+1, 128);
return TRUE;
}
else
{
return FALSE;
}
}
方案特点:
ET199加密锁具备硬件计算RSA算法的功能,并且ET199加密锁中密钥文件是安全不会被窃取的,这保证了加密锁中密钥的安全,利用这个功能将产生与验证注册码(加密与解密)的过程移植到锁内完成,那么破解者没有办法得到密钥,也就没有办法模仿这个计算过程,保证了用户注册的合法性。
- ET199加密方案——用户注册机制
- ET199加密方案——文件MD5校验
- ET199加密狗是如何复制
- 坚石诚信ET199外壳加密方式
- 用户注册实现方案一
- 使用ET199加密锁存储TrueCrypt的密钥文件
- openfire 注册用户加密方法解析
- openfire 注册用户加密方法解析
- 软件加密技术和注册机制加密基础
- 加密解密-TraceMe—注册机
- 模式2——用户注册
- JavaMai——邮箱验证用户注册
- 用户注册——关键字过滤
- JavaMai——邮箱验证用户注册
- JavaMail——邮箱验证用户注册
- JavaMai——邮箱验证用户注册
- Android之广播机制—静态注册
- Android之广播机制—动态注册
- 王爽汇编 实验12编写0号中断处理程序
- Linux WEB服务器集群在电子商务中的应用
- .NET技术博客:牛人牛博强力推荐(持续更新)
- delphi阶乘递归算法一例
- Ubuntu下串口工具
- ET199加密方案——用户注册机制
- J2ME中的基础碰撞检测算法
- PKU1008
- sqlite建立inner join 查询
- java学习内容
- Execl (转)导入导出execl 全
- 如何使用URL跳转解决Web服务80端口被封问题
- C#.NET把数据导出EXCEL
- 留点痕迹。。。