原文:http://www.jiamisoft.com/blog/3471-ruanjianjiamifangfa.html

软件行业的加密是软件厂商为了保护软件开发的利润而采取的一种软件保护方式。当前,软件加密方法多种多样,从实现形式上经历了两个阶段:不依赖硬件的加密(软加密)方案和依赖特定硬件的加密(硬加密)方案。

一、不依赖硬件的加密方法

不依赖硬件的加密方法是一种低成本的加密方式。它的特点是不需要有辅助的硬件存在,直接在软件中设立密码。相关的方法有序列号法、密码表加密法、许可证法。

1、序列号法加密法

序列号法是用户在购买正版软件的时候供应商提供给他们正确的密码,从而使他们顺利安装和使用购买的软件的方法。但是,由于电脑软件的易复制性,盗版软件只需复制软件及安装序列号,一样能够完成安装并顺利运行,在软件功能上没有任何缺损。于是,这种类型的“钥匙”其实成了一种象征性的摆设,没有什么加密强度可言。

2、密码表加密法

密码表加密法是程序在运行时提出一些提示问题,用户需要按提示问题回答,如果回答错误则程序停止运行。正常情况下,只有输入正确的密码,软件才认为是合法使用者。这种加密方法运行简单,使用广泛。但是,因为密码表的特征字串很容易被复制,盗版者可以把整个密码表输入到计算机中存成一个文件,同软件的盗版一同公布出来,所以很容易被盗版者利用。

3、许可证加密法

从某种角度上说,这种方式是序列号加密的一个变种。用户从网上下载的或购买的软件并不能直接使用,软件在安装时或运行时会对计算机进行一番检测,并根据检测结果生成一个计算机的特定指纹,这个指纹可以是一个小文件,也可以是一串谁也看不懂的数,需要把这个指纹数据通过Internet、E-mail、电话、传真等方式发送到开发商那里,开发商再根据这个指纹给用户一个注册码或注册文件,用户得到这个注册码或注册文件后,按软件要求的步骤在计算机上完成注册后方能使用。

这个方法的买卖也是完全通过网络来进行的,而且用户购买的软件被限制了,只能在自己的计算机上运行,换到其他的计算机上,这个注册码或注册文件可能不再有效。同时用户更换某些硬件设备也可能造成注册码的失效,而且用户得到软件后在完成注册工作前会有一段时间无法使用。对于软件开发商来说服务与管理的工作量无疑也是非常巨大的。将来PIII处理器内部有了特定的序列号,将会减少这种加密方法的硬件依赖性,但估计普及起来还有很长的一段时间。

二、依赖特定硬件的加密

硬加密的原理是将加密信息固化在某个硬件电路中,然后将它作为一个软件的附加设备销售给用户。当运行该软件的时候,将该固化的电路设备接到计算机的输出端口,软件根据是否检测到对应的“密钥”来决定是否运行该软件或者屏蔽某些功能。在这一类加密保护中有软盘加密、加密卡、软件锁等。

1、软盘加密

钥匙盘的方式是最常见的软盘加密方式。所谓钥匙盘方式就是通过BIOS的INT13中断对软盘格式化一些特殊的磁道,有的还在特殊磁道里写入一定信息,软件在运行时要校验这些信息。这种软盘就好象一把“钥匙”一样,所以被人习惯称为钥匙盘。如KV3000等杀毒盘和早期的计算机等级考试安装盘就采用了这种加密方式。它们的主要特点是在软磁盘的特殊位置做标记,在软件运行中计算机要读取这些特殊标记,以验证软件的合法性。由于记录这种特殊标记的位置不能被平常的拷贝命令或拷贝软件所读取,所以,钥匙盘类的软件不能被轻易复制,这样,加在软件中的“锁”就变得比较安全有效了。

2、加密狗

加密狗是插在计算机并行口上的软硬件结合的软件加密产品。加密狗一般都有几十或几百字节的非易失性存储空间可供读写,有的内部还增添了一个单片机。软件运行时通过向并行口写入一定数据,判断从并行口返回密码数据正确与否来检查加密狗是否存在。加密狗包括加密代码程序和“密钥”(亦称加密盒)两部分。加密代码程序检查“密钥”是否存在,是否正确,在无误的情况下,去执行正常功能的应用程序。“密钥”中存放了“密码”,用硬件电路实现加密。

3、采用BIOS序列号

随着技术的高速发展,获取CPU信息和硬盘信息的加密方式越来越不适用。在计算机的升级之中,主板是面临淘汰的可能性最小的硬件,因此,主板序列号将作为主板有唯一的标志,被运用到软件的加密中。主板序列号其实就是BIOS序列号,因为每台计算机的主板都有唯一的标志———BIOS序列号,所以完全可以将这个序列号作为软件的认证信息。

三、各种加密方法的比较

1、依赖硬件的加密与不依赖硬件的加密的比较

依赖特定硬件的加密软件不容易被复制,因此,依赖特定硬件的加密比不依赖特定硬件的加密可靠。

2、“硬件指纹”与“软件指纹”的比较

“软件指纹”是指在传统的磁盘加密方法中,以软件的方式在磁盘的磁道上产生特殊的格式作为指纹,因此,“软件指纹”的产生受到磁盘机的转速、兼容性等不稳定因素的影响较大。另外,磁盘是一种容易损坏的介质,必须细心地保存指纹盘。“硬件指纹”是指指纹以硬件的形式存在,具有很高的可靠性。

3、加密狗与磁盘的比较

采用加密狗加密软件,由于指纹和软件是分离的,可以对软件进行备份,以防止原盘损坏。而磁盘加密方法把指纹放在磁盘上,不能备份,如果原盘损坏,软件就不能继续使用。

采用加密狗加密时,软件以不加密的形式存放,可以大批地快速复制,而采用磁盘加密方法,必须在每张盘上逐个制作指纹,而且指纹盘的质量难以保证,所以,加密狗加密法比磁盘加密法可靠。

无论是不依赖硬件的加密法还是依赖硬件的加密法,都是为了防止软件盗版而采取的一种主动的自我保护行为。加密技术的发展,也集中体现了计算机软硬件技术的前沿水平。发展加密技术,不仅仅是保护软件不被盗版,更重要的是培育一个劳而有获的健康的软件市场。

小知识之软件加密

软件加密就是用户在发送信息前,先调用信息安全模块对信息进行加密,然后发送,到达接收方后,由用户使用相应的解密软件进行解密并还原。采用软件加密方式有以下优点:已经存在标准的安全API(Application Programming Interface,应用程序编程接口)产品、实现方便、兼容性好。

【miscellaneous】软件加密方法的更多相关文章

  1. 利用U盘进行软件加密的方法

    利用U盘进行软件加密的方法 一般的U盘不具备加密的功能,虽然U盘和加密狗外形有一些相似,但是内部完全不一样的,U盘只是一个存储器芯片和简单的附属电路,而现在的智能卡加密狗都具有一个单独的CPU或者加密 ...

  2. 【miscellaneous】如何利用硬盘号和CPU序列号为软件加密

    原文:http://www.jiamisoft.com/blog/index.php/3469-yingpanhaocpuruanjianjiami.html 计算机软件是一种特殊的产品,为了防止软件 ...

  3. Java中常用的加密方法(JDK)

    加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些 ...

  4. [转载] Java中常用的加密方法

    转载自http://www.iteye.com/topic/1122076/ 加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的 ...

  5. iOS常见的几种加密方法(base64.MD5.Token传值.系统指纹验证。。加密)

    普通加密方法是讲密码进行加密后保存到用户偏好设置中 钥匙串是以明文形式保存,但是不知道存放的具体位置 一. base64加密 base64 编码是现代密码学的基础 基本原理: 原本是 8个bit 一组 ...

  6. C# Note30: 软件加密机制以及如何防止反编译

    参考文章: C#软件license管理(简单软件注册机制) 软件加密技术和注册机制 .NET中的许可证机制--License 背景 .net是一种建立在虚拟机上执行的语言,它直接生成 MSIL 的中间 ...

  7. 软件加密工具-Virbox 开发者工具盒

    功能 Virbox 开发者工具盒是由深思数盾研发的一套软件加密工具,将加壳工具.API文档及操作流程文档等集成在一起,方便软件开发者使用. 您可以通过 Virbox 开发者工具盒实现: dll.exe ...

  8. iOS 几种加密方法

    iOS常见的几种加密方法 普通加密方法是讲密码进行加密后保存到用户偏好设置中 钥匙串是以明文形式保存,但是不知道存放的具体位置 1.base64加密 base64 编码是现代密码学的基础 基本原理: ...

  9. ASP.NET中几种加密方法

    下面就是ASP.NET中几种加密方法.加密算法有两种,也就是上面提到的MD5和SHA1,这里我举的例子是以MD5为例,SHA1大致相同,只是使用的类不一样. MD5的全称是Message-Digest ...

随机推荐

  1. Android特定语言 Xtendroid

    Xtendroid是一款Android的领域特定语言,它大大降低样板代码,同时提供巨大的工具支持.Xtendroid利用Xtend transpiler实现,它的特点是能够在Java代码编辑或编译期间 ...

  2. 7、组件注册-@Conditional-按照条件注册bean

    7.组件注册-@Conditional-按照条件注册bean @Conditional 按照一定的条件进行判断,满足条件给容器注入bean 按照条件进行动态装配. Spring 4 开始提供的一个注解 ...

  3. 项目:JS实现简易计算器案例

    组件化网页开发下的: 步骤一:让页面动起来的JavaScript深入讲解  的 项目:JS实现简易计算器案例

  4. 023_STM32之PID算法原理及应用

    (O)关于程序BUG说明,看最后面的红色字体,视频和源代码中都没有说明 (一)PID控制算法(P:比例 I:积分 D:微分) (二)首先先说明原理,使用的是数字PID算法,模拟PID算法在计算机这样的 ...

  5. npm install命令

    1. --save-prod/-P 使用该命令后,会在package.json的dependencies中出现,是生产环境依赖: 该命令是默认命令. npm install react // 等同于 ...

  6. percona-toolkit 主从工具 master-slave

    复制类 pt-heartbeat 监控mysql复制延迟   pt-slave-delay 设定从落后主的时间   pt-slave-find 查找和打印所有mysql复制层级关系   pt-slav ...

  7. 03_每周 5 使用 tar 命令备份/var/log 下的所有日志文件

    ]# vim /root/logbak.shtar -czf log-`date +%Y%m%d`.tar.gz /var/log ]# crontab -e -u root00 03 * * 5 / ...

  8. GAN生成式对抗网络(四)——SRGAN超高分辨率图片重构

    论文pdf 地址:https://arxiv.org/pdf/1609.04802v1.pdf 我的实际效果 清晰度距离我的期待有距离. 颜色上面存在差距. 解决想法 增加一个颜色判别器.将颜色值反馈 ...

  9. Grafana +Zabbix 系列二

    Grafana +Zabbix 系列二 Grafana 简介补充 Grafana自身并不存储数据,数据从其他地方获取.需要配置数据源 Grafana支持从Zabbix中获取数据 Grafana优化图形 ...

  10. 在Ubuntu上安装openResty #1

    在Ubuntu上安装openResty #1 OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方 ...