C/S架构软件服务端注册码如何包含授权用户数的信息呢?

禁用F3 2013-05-26 02:42:37
今天公司要求我做个服务端注册码验证,
我第一想到的是MD5加密字符串,可想问大家如何在MD5里面包含授权的数量呢?因为要取出数量来检测连接数量吧?
第二个用每台电脑注册,可这个不现实。
第三个用加密够也不行。
感觉只有第一点还行得通,可第一点给个MD5加密注册码给注册后,可如何取得用户数量呢?
...全文
736 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
rayyu1989 2013-05-27
  • 打赏
  • 举报
回复
最简单的例子 返回 》 md5(值 + 值 + 数量 + 值 )|数量 客户端分割 | 判断 md5(本地值 + 本地值 + 服务端返回的数量 + 本地值) = 服务端返回md5 正常》判断数量 不正常》非法授权
threenewbee 2013-05-27
  • 打赏
  • 举报
回复
使用 软件名-版本号-授权类型-验证码 的格式就是了,验证码为前3者的sha1或者md5(的一部分)。 比如 XXERP-012-ENT100-7B3A4506
禁用F3 2013-05-27
  • 打赏
  • 举报
回复
引用 7 楼 sp1234 的回复:
[quote=引用 楼主 chirea 的回复:] 今天公司要求我做个服务端注册码验证, 我第一想到的是MD5加密字符串,可想问大家如何在MD5里面包含授权的数量呢?因为要取出数量来检测连接数量吧? 第二个用每台电脑注册,可这个不现实。 第三个用加密够也不行。 感觉只有第一点还行得通,可第一点给个MD5加密注册码给注册后,可如何取得用户数量呢?
举个例子: 在第一次运行程序时,用户进入“申请注册码”界面,此时可以读取本地的MAC地址,往注册表里随机写入一个编号,要求用户输入用户单位名、单位负责人名、单位地址电话等信息,用户从下拉列表中选择申请的授权数量。 然后通过RSA加密通讯方式,将上述所有信息打包一起发送给服务器。服务器如果认证(也就是说服务器返回"OK"),那么本地可以计算一个md5显示出来,并让用户另存下来(貌似是服务器计算的,实际上服务器根本无需计算)。 然后本地机器每一次真正启动正式功能时,从app.config中、注册表中、本地机器的mac地址(假如有多个,那么轮流取出一个参与判断)等地,分别读取数据,除去md5值以外的所有信息。然后再次计算这些信息组合起来的md5值,判断是否与另存(例如写入了app.config)的md5值是否一致。如果不一致,说明上一次的服务器认证失效,本地环境有所改变,需要重新认证。 这个过程,核心目的就是强迫本地机器必须在跟服务联网的情况下才能修改关键配置信息,而如果不修改关键配置信息则不必联网。并不需要搞什么“加密”。 因此那种说每次一开机都要联到服务器上去验证什么md5的说法,是不对的。如果你能保证每次开机必须联网,你直接让服务器进行判断终端提供的Register参数集合就好了(这就好像是实时在线的网游一样),服务器端完全可以随时改变终端的授权配置,还算什么md5并且保存到本地啊?[/quote] 辛苦您了,你这种方法也不错.我知道怎么做了.在些多谢各位
禁用F3 2013-05-27
  • 打赏
  • 举报
回复
引用 9 楼 caozhy 的回复:
使用 软件名-版本号-授权类型-验证码 的格式就是了,验证码为前3者的sha1或者md5(的一部分)。 比如 XXERP-012-ENT100-7B3A4506
谢谢,这种思路不错
  • 打赏
  • 举报
回复
当你不想让人家“每台电脑注册”的时候,而仅凭一个编码就可以随便安装在什么电脑上的时候,其实你就根本无法控制。所以如果你说“第二条不行、第三条也不行”,那么我想你也就别打算这样做了,干脆就将你的前端程序设计为只有在线连到服务器上才能运行的程序吧!
  • 打赏
  • 举报
回复
引用 楼主 chirea 的回复:
今天公司要求我做个服务端注册码验证, 我第一想到的是MD5加密字符串,可想问大家如何在MD5里面包含授权的数量呢?因为要取出数量来检测连接数量吧? 第二个用每台电脑注册,可这个不现实。 第三个用加密够也不行。 感觉只有第一点还行得通,可第一点给个MD5加密注册码给注册后,可如何取得用户数量呢?
举个例子: 在第一次运行程序时,用户进入“申请注册码”界面,此时可以读取本地的MAC地址,往注册表里随机写入一个编号,要求用户输入用户单位名、单位负责人名、单位地址电话等信息,用户从下拉列表中选择申请的授权数量。 然后通过RSA加密通讯方式,将上述所有信息打包一起发送给服务器。服务器如果认证(也就是说服务器返回"OK"),那么本地可以计算一个md5显示出来,并让用户另存下来(貌似是服务器计算的,实际上服务器根本无需计算)。 然后本地机器每一次真正启动正式功能时,从app.config中、注册表中、本地机器的mac地址(假如有多个,那么轮流取出一个参与判断)等地,分别读取数据,除去md5值以外的所有信息。然后再次计算这些信息组合起来的md5值,判断是否与另存(例如写入了app.config)的md5值是否一致。如果不一致,说明上一次的服务器认证失效,本地环境有所改变,需要重新认证。 这个过程,核心目的就是强迫本地机器必须在跟服务联网的情况下才能修改关键配置信息,而如果不修改关键配置信息则不必联网。并不需要搞什么“加密”。 因此那种说每次一开机都要联到服务器上去验证什么md5的说法,是不对的。如果你能保证每次开机必须联网,你直接让服务器进行判断终端提供的Register参数集合就好了(这就好像是实时在线的网游一样),服务器端完全可以随时改变终端的授权配置,还算什么md5并且保存到本地啊?
  • 打赏
  • 举报
回复
md5只是一种码计算方法,充其量你可以为一大块数据进行签名。例如你有一个文本文件(或者就是普通的string),里边有关于用户的一对信息,其中可能就包括所谓的“授权数量”这个值,也包括“网卡MAC”甚至是你随便往注册表里写进去的某个值,也包括用户单位名称和企业联系人、地址等等,也包括产品开发商名称和地址和电话等等,等等,最后计算一个md5。 那么你就可以把此“授权数量”跟md5散列值,跟企业联系人,跟产品开发商名称,等等信息写到程序的app.config中。当程序下次运行时,在内存中重建这个文本文件(或者就是普通的string),然后再次计算md5散列值,来判断此md5值是否就是本地的md5值。
  • 打赏
  • 举报
回复
引用 3 楼 chirea 的回复:
[quote=引用 2 楼 rayyu1989 的回复:] 我也是想MD5里面包含数量,可是程序不好在MD5里面取数量。有什么办法可以取MD5里面包含的数量吗? 明文数量判断是什么意思?
太能瞎联系了,要小心被自己忽悠得什么都做不成了啊。 md5只是一种码计算方法,充其量你可以为一大块数据进行签名。例如你有一个文本文件(或者就是普通的string),里边有关于用户的一对信息,其中可能就包括所谓的“授权数量”这个值,也包括“网卡MAC”甚至是你随便往注册表里写进去的某个值,也包括用户单位名称和企业联系人、地址等等,也包括产品开发商名称和地址和电话等等,等等,最后计算一个md5。 那么你就可以把此“授权数量”跟md5散列值,跟企业联系人,跟产品开发商名称,等等信息写到程序的app.config中。当程序下次运行时,在内存中重建这个文本文件(或者就是普通的string),然后再次计算md5散列值,来判断此md5值是否就是本地的md5值。
禁用F3 2013-05-26
  • 打赏
  • 举报
回复
引用 2 楼 rayyu1989 的回复:
直接返回数量 md5值包含数量 这样数量就不会被伪造 校验md5》 根据明文数量判断》 当然 数量你可以传递时候再加密 异或啊 des啊
我也是想MD5里面包含数量,可是程序不好在MD5里面取数量。有什么办法可以取MD5里面包含的数量吗? 明文数量判断是什么意思?
rayyu1989 2013-05-26
  • 打赏
  • 举报
回复
直接返回数量 md5值包含数量 这样数量就不会被伪造 校验md5》 根据明文数量判断》 当然 数量你可以传递时候再加密 异或啊 des啊
xtiu77 2013-05-26
  • 打赏
  • 举报
回复
MD5单向的.无法解密..可以用DES

111,076

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧