原文: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. 4、Spring Boot 2.x 自动配置原理

    1.4 Spring Boot 自动配置原理 简介 spring boot自动配置功能可以根据不同情况来决定spring配置应该用哪个,不应该用哪个,举个例子: Spring的JdbcTemplate ...

  2. Android系统输入事件分发详解

    什么是输入事件? 我们知道,运行android系统的设备本质上是一台计算机,使用者在和计算机进行交互的时候可以抽象成简单的对计算机的输入和输出(IO).那么对于运行在计算机上的操作系统来说,操作系统在 ...

  3. P4310 绝世好题 按位DP

    这名字可海星\(OvO\) 思路:\(DP\) 提交:2次(\(zz\)我竟然把三目运算符写错了\(QwQ\)) 题解: 按位进行\(DP\):\(f[i]\)表示结尾的数字包括\(1<< ...

  4. chrome扩展开发实战入门之一-hellocrx

    后记:在写这篇文章时,我还没搞懂chrome扩展的基本原理.后来才明白,最简单(且实用)的扩展只需要manifest.json和content_scripts.js两个文件,无需background. ...

  5. leetcode解题报告(13):K-diff Pairs in an Array

    描述 Given an array of integers and an integer k, you need to find the number of unique k-diff pairs i ...

  6. 薛的lca讲课配到题解

    2.15 LCA Nearest Common Ancestors POJ 1330 题意:给出一棵树, 询问两个点的最近公共祖先. 思路: $LCA$模板题,请各位掏出各式各样的模板A穿它. #in ...

  7. selenium 定制启动chrome的参数

    selenium 定制启动chrome的参数 设置代理. 禁止图片加载 修改ua https://blog.csdn.net/vinson0526/article/details/51850929 1 ...

  8. Spring Cloud Config(二):基于Git搭建配置中心

    1.简述 本文选用Git作为配置仓库,新建两个环境的配置文件夹,dev 和 test,文件夹中分别存放 Config Client 端的配置文件,目录结构如下: ├ ─ ─ dev └ ─ ─ con ...

  9. tomcat发布web项目

    转:https://www.cnblogs.com/skyblue-li/p/7888951.html Tomcat是一种Web服务器,我们自己做好了一个Web项目,就可以通过Tomcat来发布.服务 ...

  10. JAVA基础知识|HTTP协议-两个特性

    一.无连接 无连接:服务器与浏览器之间的一次连接只处理一个http请求,请求处理结束后,连接断开.下一次请求再重新建立连接. 然而随着互联网的发展,一台服务器同一时间处理的请求越来越多,如果依然采用原 ...