ASP 、PHP 代码加密的安全性逻辑思考

news2025/3/9 22:19:43

以古董后台语言 asp 为例,为了保证明文代码不被最终使用者修改或抄袭,有多种方法对代码进行编码,执行时再解码。也可以直接将代码全部编译入 COM+ 组件 ,但是这需要每次都编译,不适合日常使用。

因此,这里考虑的是,利用自定义 COM+ 组件的函数来对编码代码进行解码并执行的情况( VB6 、C 等语言均可编写 COM+ 组件,写法这里不讨论,请检索相关文章)

因为最终执行时,需要进行完全解码出明文,因此,编码算法就只能选择可逆编码类型的。

如: 易位 base64 、AES 、RSA 等。

首先,需要有预设密钥(公钥、编码表等),

然后需要一个编码算法程序(base64 、AES 、RSA 等) 

将明文后台代码编码为乱码后,为了能在后台正确执行,需要在服务器端需要安装对应的解码函数 COM+ 组件 ,该 COM+ 组件为了解码编码的代码,那么就必须输入解密的密钥。

后台代码是在最终用户的服务器上,解密用的 COM+ 组件必须能读懂该密钥,但你不能让最终用户读懂该“密钥”,否则其可以解密你加密编码的后台代码。

因此,我采用预设内置编码的方法来编码解码密钥等信息,输入该解码组件。

而如果最终用户手上有你预设好加密密钥的加密编码程序,那么,通过输入特定顺序的加密原文即可很轻松的破解出加密算法及其密钥。

比如,base64 编码,它本身就不是设计用于加密,但如果采自定义码表,再加上易位操作等之后,仅凭编码结果,基本上是不可能解密的。

但是如果有对应的编码程序,那么只需要编码 0~63 这 64 个数以 6 位组成的二进制串:

/*
十进制  二进制
   0= 000000
   1= 000001
   2= 000010
   3= 000011
      ......
  62= 111110
  63= 111111

十进制      0         1        2       3    ......     62     63 
二进制   000000 00 | 0001  0000 | 10  000011 ......  1111 10 111111
十六进制    0    0      1     0        8   3            F     B   F

最终得到 48 字节十六进制数据:

00 01 83 10 51 87 20 92
......
5D B7 E3 9E BB F3 DF BF

*/

再按八位拆分为十六进制数据后,得到的 48 字节的这串数据让其编码,那么编码出来的最终结果就是你的自定义编码表:

/*

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
因 48*8/6=64 ,按 6 位刚好截取完,故编码结果无需末尾的补零 = 号,
但是,可知编码结果中出现的不同字符为65个,除去上面编码出来的64个,
剩下那一个就是结尾补零字符。

*/

可见,最终需要保密的不是什么编码表,也不是密钥,而是编码过程程序,因为其中有自定义易位编码函数等,只要不知道加密原文,那么在没有编码程序的情况下,光凭密文是没办法解密的,即使你有编码表和密钥也不行。

因此,这个代码加密方案不适合推广给别人用,只适合在自己保密编码算法的情况下给编码后台代码给最终用户运行。

最终逻辑就是,你用卖给客户一个产品,但是因为加密的启动钥匙已插在产品上,客户无法看懂加密的钥匙,产品能正常使用,所以客户打不开你也不希望客户能打开产品窥探其中的玄机,这时候,客户是基本无法打开产品外壳的。由于启动钥匙生产工具在你手上,所以客户无法自己生产钥匙,也就不可知钥匙和产品的关系。

但是如果你将钥匙生产工具交给了客户,那么客户就可以通过输入不同的原材料而推导出产品和原材料的关系,从而将之前你提供的钥匙进行破解,最终可打开产品外壳。

也就是说,最终需要保密的是产品生产过程。

由此可推得,只要是可逆编码,均可由编码过程得到解码方法,AES、RSA 也一样,因此为何不选择效率更高的自定义 base64 编码呢?

‘--------------------------------------------------------------------------------------------------------

以上举例的 uuecode.bin 文件可将以下字符串(base64码表)保存为 uuecode.bin.txt : 

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

然后用我之前提供的 base64&UUE文件编码解码程序,以 base64 方式解码即可得到。

欢迎感兴趣的朋友留言讨论,以下为一串纯文本字符串用自定义 base64 码表多次编码得到的字串,有兴趣的可以挑战解码看看:

QubzgWcRuf4WsZ1SuWkU9K0MuyQSY8s3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【STL十二】适配器——容器适配器

【STL十二】适配器——容器适配器 一、适配器1、适配器简介2、使用适配器的优点3、适配器种类3.1、容器适配器3.2、迭代器适配器3.3、函数适配器(function adapters) 二、容器适配器1、简介2、分类 三、stack适配器1、简介2、构造函数3、成员函数4、demo 三、queue适…

Ubuntu NVIDIA-Docker安装

Ubuntu NVIDIA-Docker安装 Docker简介NVIDIA驱动安装NVIDIA-Docker安装 系统环境: 系统:linux 版本:ubuntu20.04 Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#…

WebRTC真实IP泄露

WebRTC真实IP泄露 1.概述2.利用漏洞获取真实IP地址演示3.WebRTC介绍4.WebRTC 泄漏真实IP原理5.防范措施 1.概述 很多人可能误以为使用代理就可以完全隐藏我们的真实IP地址,但实际并不总是这样。事实上,有大量文章指出,WebRTC存在安全风险&am…

零项目零科研,本科排名倒数,一战上岸上海交大电子与通信工程

笔者来自通信考研小马哥23上交819全程班学员 本科就读于哈工大(威海),本科成绩很差,专业排名62/99,没有科研,没有实验室,没有项目,连最基本大家都会参加的科技立项我四年也没有参与…

幽灵空白节点

图片下面为什么会有空白间隙呢&#xff1f;因为内联元素默认都是和 a 的下边缘基线对齐&#xff0c;基线和底部是有一段距离的&#xff0c;所以图片下面有一段间隙。 <style>.container {background-color: red;}img {width: 100px;height: 100px;} </style><d…

误删恢复及备份恢复

误删恢复&#xff0c;及备份恢复 一、误删恢复1.1用losf恢复进程存在的文件1.2恢复EXT类型的文件 二、备份恢复的集中方式2.1用xfsdump&#xff0c;xfsrestore对xfs类型文件进行备份恢复2.2用cpio命令备份恢复2.2.1通过find过滤文件进行备份 一、误删恢复 1.1用losf恢复进程存…

自然语言处理实战项目4-文本相似度的搜索功能,搜索文本内容

大家好&#xff0c;我是微学AI&#xff0c;今天给大家带来自然语言处理实战项目4-文本相似度的搜索功能&#xff0c;搜索文本内容。文本相似度搜索是一种基于自然语言处理技术&#xff0c;用于搜索和匹配文本内容的方法。其主要目的是将用户输入的查询内容与已有的文本数据进行…

c盘满了怎么清理垃圾而不误删?C盘清理,4个方法!

案例&#xff1a;c盘满了怎么清理垃圾而不误删 【我的c盘现在已经爆红了&#xff01;想清理下c盘的文件&#xff0c;但是害怕误删重要的文件&#xff0c;应该怎么做才能清理c盘但不误删重要的文件呀&#xff01;急需答案&#xff01;】 随着时间的推移&#xff0c;c盘可能会因…

游戏服务器如何搭建

无论是游戏公司还是游戏爱好者&#xff0c;游戏服务器都是不可或缺的一部分。游戏服务器承载着游戏的运行和体验&#xff0c;是在所有玩家之间建立连接的纽带。如果你想了解如何搭建游戏服务器以及相关的配置要求&#xff0c;那么本文是无法错过的。在本文中小编将为您介绍如何…

Nginx安装注意事项

一.看你是什么系统,先从官网下载你想要的版本 二.windows系统 直接解压就行了 conf 是放配置文件的地方 html是 放页面的位置 ,欢迎页也在这里 有什么静态资源也可以放这里 logs 放日志文件 在路径栏位置直接cmd 开启命令窗口 注意这里是在nginx.exe文件所在目录进行的…

TOOM解析如何搭建一套适合自己的舆情监测系统?完整的实战指南

随着互联网的普及和社交媒体的盛行&#xff0c;人们在网络上的活动越来越多&#xff0c;同时也涌现出大量的信息和舆情。这些信息和舆情在一定程度上会影响社会和个人的发展和进步。因此&#xff0c;舆情监测逐渐成为一项重要的任务。在本篇文章中&#xff0c;我们将为大家介绍…

Adobe国际认证中文官网

Adobe国际认证中文官网是Adobe公司为了帮助用户提高技能水平和职业竞争力而推出的认证服务。该官网提供了一系列的Adobe认证考试&#xff0c;包括Photoshop、Illustrator、InDesign、Premiere Pro等多个软件的认证考试。通过参加这些考试&#xff0c;用户可以获得Adobe认证&…

ASEMI代理ADG5412BRUZ-REEL7原装ADI车规级ADG5412BRUZ-REEL7

编辑&#xff1a;ll ASEMI代理ADG5412BRUZ-REEL7原装ADI车规级ADG5412BRUZ-REEL7 型号&#xff1a;ADG5412BRUZ-REEL7 品牌&#xff1a;ADI/亚德诺 封装&#xff1a;TSSOP-16 批号&#xff1a;2023 引脚数量&#xff1a;5 安装类型&#xff1a;表面贴装型 ADG5412BRUZ-…

《花雕学AI》你知道人工智能ChatGPT在10秒钟里能写出多少种标题吗?我试了24次,惊呆了!

今天准备测试AI绘画&#xff0c;使用几个不同的AI平台来生成猫娘图片&#xff0c;以此具体学习绘图的AI咒语。这篇博客用什么标题好呢&#xff1f;于是&#xff0c;我开始关心如何优化标题&#xff0c;还是老办法&#xff0c;不懂就问ChatGPT&#xff08;没有正式账号&#xff…

PHP实现输入英文语句统计单词数量,使用函数随机获取数组的最小值和最大值这两个程序的代码

目录 前言 一、输入英文语句&#xff0c;统计单词数量 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 二、使用函数随机获取数组的最小值和最大值 2.1运行流程&#xff08;思想&#xff09; 2.2代码段 2.3运行截图 前言 1.因多重原因&#xff0c;本…

WordPress安装

目标 在一台 CentOS Stream release 8 虚拟机上&#xff0c;安装一台WordPress 6.2 安装过程 安装依赖组件 依赖组件可以参考官方文档&#xff1a;https://developer.wordpress.org/advanced-administration/before-install/ 主要有3个组件&#xff1a; PHP 7.4 or greate…

爬虫为什么需要多线程

多线程爬虫是一种同时运行多个线程来提高爬取速度的爬虫方式。通过将大量的工作分配给不同的线程&#xff0c;可以减少爬虫的运行时间&#xff0c;提高效率。不过需要注意的是&#xff0c;在爬取过程中需要合理的管理线程数&#xff0c;以避免对被爬取的网站造成过大的负荷。 …

再聊 MySQL 聚簇索引

为什么是再次理解呢&#xff1f;因为松哥之前写过相关的文章介绍过聚簇索引&#xff0c;但是感觉还不够&#xff0c;因此今天想再来和小伙伴们聊一聊这个话题。 1. 什么是聚簇索引 数据库的索引从不同的角度可以划分成不同的类型&#xff0c;聚簇索引便是其中一种。 聚簇索引…

家用洗地机怎么选?洗地机选购技巧分享

洗地机是一种专业的清洁设备&#xff0c;广泛应用于商业和工业领域。它可以有效地清洗和护理各种硬表面地板&#xff0c;如混凝土、大理石、瓷砖和木地板等。洗地机不仅能够提高清洁效率&#xff0c;还可以使地面更加卫生、美观和持久。而且大部分洗地机还拥有一键自清洁、除菌…

为什么企业都需要搭建搭建一个内部知识库?

企业内部知识管理是指企业通过各种手段收集、整理、管理和传播企业内部的知识&#xff0c;以提高企业的竞争力和创新能力。在实践中&#xff0c;企业内部知识管理往往需要建立一个内部知识库&#xff0c;以更好地实现知识的共享和管理。本文将从以下几个方面探讨为什么企业内部…