| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 网络协议 -> .NET单机软件保护策略(2)软件证书制作 -> 正文阅读 |
|
|
[网络协议].NET单机软件保护策略(2)软件证书制作 |
|
单机软件的一个特点是,你毫无保留地把程序都交给用户了。所以,如果软件能够反编译,任何的证书都形同虚设。也正因为此,我们下面所谈的,都是在软件已经过保护,不能反编译为前提的。 软件的认证,一般有三种元素存在:
对于单机软件来说,更多时候是机器认证和时间认证结合,用户认证不太可用,因为用户名可以交给其他人使用。本文先介绍机器认证的方法。 软件证书制作和使用的流程如下图所示:
我们先来看软件证书制作,其步骤为:
而软件证书的使用,也就是验证过程,是跟制作过程基本反过来的:
? 下面解释一下上面所提的数字签名相关的内容。 软件证书里包含机器码和有效期等信息,如果它是以一种明文方式呈现,那用户很容易就能将其修改。所以我们需要对信息进行加密。 我们可以使用一种对称加密的方法,也就是用一个密码加密,用同样的密码解密。我们上面提到过,单机软件就是把整个程序都交给用户了。无论密码藏在哪里,最终是有办法找到的。一旦找到了这个密码,所有软件证书的破解将迎刃而解。所以这种方法是行不通的。 而另外一种方法是,我没办法把密码藏起来,那就直接把密码告诉你好了;我没办法防止你改软件证书,那你随便改好了。关键就在于,证书一旦被修改,软件就能发现。这里使用的是非对称加密的数字签名方法。在非对称加密里,顾名思义,私钥是不能公开的,公钥是能够公开的。它们有两种使用方法: 1. 公钥加密,私钥解密。 2. 私钥加密,公钥验证。 我们这里使用的是第2种方法。下面是C#里使用RSA进行签名和验证的示例代码:
|
|
|
| 网络协议 最新文章 |
| 使用Easyswoole 搭建简单的Websoket服务 |
| 常见的数据通信方式有哪些? |
| Openssl 1024bit RSA算法---公私钥获取和处 |
| HTTPS协议的密钥交换流程 |
| 《小白WEB安全入门》03. 漏洞篇 |
| HttpRunner4.x 安装与使用 |
| 2021-07-04 |
| 手写RPC学习笔记 |
| K8S高可用版本部署 |
| mySQL计算IP地址范围 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/22 21:11:15- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |