0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

别忘了在你的程序中留下签名

聚丰开发 2018-10-19 15:59 次阅读

注:本文是作者以前发表在其个人博客,现在发布到“聚丰开发”专栏


许多公司程序的一开始总会有这样一段代码。

const unsigned char version_num[]={......};

大括号中为产品编号和程序版本号,产品编号和程序版本号都是公司指定的,除了少数时候可以通过外部通讯读取这个号码外,大多数时候只是放在这里,程序并没有对其做任何处理。

大多数人的理解是这里的产品编号和程序版本号应该是为了方便公司对产品进行管理,比如现在有同一个型号不同版本的产品混在一起,就可以利用其进行区分。实际上这段代码的作用不是这样简单,更重要的是对外起到身份标示的作用,当出现知识产权纠纷的时候,这段代码的威力就显现了出来。


现在让我来给你一个假设,这个假设是针对单片机产品:你花了很长时间终于开发出一款受市场欢迎的产品,经过产品开发、市场前期推广,俨然就是花开结果,马上就是享受回报的时候。可此时杀出一家知名公司推出同样的产品,一下就把你逼到无利可图的地步。你经过仔细对比,可以确认此知名公司推出的产品用的代码就是你开发的,因为产品是你开发的,没有源代码外泄的可能。

难道真的这么巧是知名公司开发出了和你一模一样的产品?这种说法只能是哄小孩,一个产品,多少都有一些只有开发者自己知道的细节,只有开发者自己才知道这些细节的存在,而且这些细节是不会再产品规格书上有体现的,就好比是双胞胎,别人看就是一个模子出来的,可父母一眼就能看出许多不同。


现在答案是显而易见的,是知名公司通过某种非正常手段得到了你烧到芯片里面的代码。既然这样那可以去告知名公司啊,现在一个问题就出现在你面前,你如何证明这个程序是你写的?也许你会说要证明这个还不简单?我有源代码啊,知名厂家没有。可如果知名厂家说他们的源代码被当时的项目工程师离职时删除了,现在在你这里出现了,好哇,告你非法窃取公司商业机密。

当然,知名公司告你是告不赢的,只不过他们是大公司,不缺小钱,他们可以花一笔钱请一个律师把你拖到漫长的司法诉讼过程中,知名公司并不希望打赢官司,目的只有一个:“拖垮你,让你觉得耗不起只好自动退出。”

如果你在代码里面有这样的一段代码,恐怕知名公司别再妄想通过司法过程的漫长来拖垮你,你很容易就能用这段代码通过司法鉴定证明程序就是你编写的,一旦证明这个程序是你的,知名公司就不会再使用拖字诀,到那个时候就只有一条路可供他们选择,找你和解。

这是我通常在程序中留的个人签名,很简单,就是我常用的一个邮箱,哈!当然不会一直都是这个邮箱啦,会变来变去的,但有一个基本原则,很容易证明这个签名信息就是我。

const unsigned char author_msg = ['s','j','_','d','a','i','@','h','o','t','m','a','i','l','.','c','o','m');

如果你觉得这个签名还不够安全,看下面的。


name_sum=0;

for(i=0;i(author_msg);i++)

{

name_sum=name_sum+author_msg[i];

}

if(name_sum!=0xXX)

{

while(1)

{

//死循环

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏

    评论

    相关推荐

    工业4.0技术推动制造业向前发展

    在制造业飞速发展的今天,技术的进步就像是给我们加了个“超速”按钮,但别忘了,人才是这个行业的“驾驶员”!
    的头像 发表于 12-17 14:46 91次阅读

    SoC的数字签名加解密过程

    SoC的数字签名验证是指在系统启动或固件更新等关键时刻,对加载的固件或软件进行数字签名的验证过程。通过验证数字签名,系统可以确保所加载的固件或软件是经过授权和信任的,从而防止恶意代码的执行和系统启动过程的篡改。
    的头像 发表于 10-21 14:52 214次阅读

    安装驱动被系统禁止?win10系统禁用驱动程序强制签名

    01 使用USB线连接模块和电脑,设备管理器显示如下,需要先安装驱动 02 禁用驱动程序强制签名(以win10为例)   2.1、首先我们打开并登录操作系统左下角。开始菜单上单击选择设置   2.2
    的头像 发表于 09-29 11:53 631次阅读
    安装驱动被系统禁止?win10系统禁用驱动<b class='flag-5'>程序</b>强制<b class='flag-5'>签名</b>

    INA226A上A0、A1引脚作为选址引脚在你们demo同时接了上拉电阻至高电平和下拉电阻到地是为什么?

    您好,请问INA226A上A0、A1引脚作为选址引脚在你们demo同时接了上拉电阻至高电平和下拉电阻到地是因为什么,这不是相当于不起作用吗?
    发表于 08-06 07:17

    esp32c3安全启动文档里的签名,使用与计算的签名和使用idf.py签名有什么不同?

    esp32c3安全启动文档里的签名,使用与计算的签名和使用idf.py签名有什么不同?预签名用的是--pub-key,普通的签名用的是--k
    发表于 07-23 08:15

    如何在自己的程序启用AT模块?

    对 AT 命令做出反应。 你知道如何在你自己的程序启用AT模块吗? 可能吗? 乐鑫 SDK NONOS SDK API 文档介绍了 at_custom.h 和 at_init(),但看起来这是为了开发
    发表于 07-16 08:25

    鸿蒙开发:Universal Keystore Kit密钥管理服务 签名、验签介绍及算法规格

    为实现数据完整性保护和防抵赖,可使用生成/导入的密钥,对数据进行签名验签操作。
    的头像 发表于 07-10 09:29 224次阅读
    鸿蒙开发:Universal Keystore Kit密钥管理服务 <b class='flag-5'>签名</b>、验签介绍及算法规格

    OpenHarmony开发实例:【配置应用签名信息】

    使用真机设备运行和调试OpenHarmony应用前,需要对应用进行签名才能正常运行。
    的头像 发表于 04-22 16:52 432次阅读
    OpenHarmony开发实例:【配置应用<b class='flag-5'>签名</b>信息】

    鸿蒙OS开发指导:【应用包签名工具】

    OpenHarmony系统内置密钥库文件,文件名称为OpenHarmony.p12,内含根CA证书、中间CA证书、最终实体证书等信息,工具基于该密钥库文件对OpenHarmony应用进行签名
    的头像 发表于 04-17 11:13 1048次阅读
    鸿蒙OS开发指导:【应用包<b class='flag-5'>签名</b>工具】

    企业鸿蒙原生应用元服务备案实操包名公钥签名信息

    一、 鸿蒙应用/元服务如何查询包名? 登录 AppGallery Connect ,点击“我的应用”,输入应用名称可查询到需要备案的鸿蒙应用/元服务包名。 二、 鸿蒙应用/元服务如何获取公钥和签名
    发表于 04-10 15:32

    鸿蒙ArkTS开始实例:【canvas实现签名板功能】

    使用ArkTS的canvas实现签名板的功能,canvas画布大家都很熟悉,我们会用它经常实现一些画板或者图表、表格之类的功能。canvas签名板是我在开发APP过程实现的一个功能
    的头像 发表于 04-08 10:10 922次阅读
    鸿蒙ArkTS开始实例:【canvas实现<b class='flag-5'>签名</b>板功能】

    使用两种不同的数字签名对用户应用程序进行签名是否适用?

    我想问一下使用两种不同的数字签名对用户应用程序进行签名是否适用,安全映像将
    发表于 01-18 10:43

    爱的双向保护!CDB9ZW无极性直流小型断路器上市

    -END- 别忘了点赞+在看哦! 原文标题:爱的双向保护!CDB9ZW无极性直流小型断路器上市 文章出处:【微信公众号:德力西电气】欢迎添加关注!文章转载请注明出处。
    的头像 发表于 12-27 17:25 708次阅读
    爱的双向保护!CDB9ZW无极性直流小型断路器上市

    mysql密码忘了怎么重置

    mysql密码忘了怎么重置  MySQL是一种开源的关系型数据库管理系统,密码用于保护数据库的安全性和保密性。如果你忘记了MySQL的密码,可以通过以下几种方法进行重置。 方法一:使用MySQL
    的头像 发表于 12-27 16:51 6652次阅读

    手把手教你使用ArkTS的canvas实现签名板功能

    一、屏幕旋转 ● 实现签名板的第一个功能就是旋转屏幕。旋转屏幕在各种框架中都有不一样的方式,比如:在 H5 端,我们一般是使用 CSS 的 transform 属性的 rotate()方法来强制
    发表于 12-20 10:33