当前位置:网站首页>关于技术分享的思考
关于技术分享的思考
2022-08-10 17:50:00 【51CTO】
故事起因
讲一个自己的故事,应网友的请求,帮他找一个人,这个人与他通过支付宝发生过金钱上的来往,后面可能是产生了什么纠纷,具体原因我也不太清楚,他的请求就是:能不能通过支付宝上的转账记录查询到对方的手机号。
由于支付宝的隐私机制,如果对方的手机号不存在你的手机通讯录中,你是看不到对方的完整手机号的,只能看到前三位和后两位,转账的时候能看到对方的头像与昵称数额比较大的时候还能知道对方的名字,但就是无法看到完整的11位的手机号
上面这段话,有个很重要的隐含条件,对方的手机号存在你的手机通讯录中,那我就可以通过支付宝看到他完整的号码!
这就激起了我的兴趣,觉得可以试试,因为思路就是围绕上面那个机制,问题就将简化成将所有可能的号码添加到我的手机通讯录。
如何找到所有可能的号码呢?简单粗暴的就是把中间缺省的6位数字用排列组合的形式全部列出来,但凡学过点排列组合的人都知道,6位数,每位数都有0-9的十种可能,一共就有10的6次方,也就是一百万种……即使能列出来,手机也得炸了吧,有这么大容量存储100万条号码吗?
问题就变成了尽可能的缩小范围,不说太细,怕被别有用心的人利用。
然后就是利用代码将全部可能的号码生成出来,问题就变成了如何将生成的手机号导入手机,这是另一个问题,我还是用代码解决的,也不说太细,怕被别有用心的人利用。
结果就是,最终我帮他找到了。
但我要说的是另外两件事情:
解决问题的通用思路:
当你面对问题时,最先一定要聚焦于最终的结果,围绕最终结果提出解决方案,能提出解决方案,说明理论上这个问题是有解的,否则就没有可行性;然后再围绕解决方案逐步将问题解剖,把事务分解成最基本的组成,利用各种方法,解决分解的过程中的每一个问题,案例中的最终结果是通过支付宝找到某人的号码,解决方案就是利用支付宝的手机通讯录能加好友的机制,问题就变成了将对方的号码添加到通讯录,添加的前提是要拿到号码,拿到号码的解决方案是暴力遍历,但经过分析暴力遍历结果过多,几乎没有可行性,问题就变成了如何减少遍历结果,这个问题的解决方案就是*****************缩小范围,这个方案优化后可以执行,利用代码三下两下就搞定,得到了一堆号码,问题又出现了,怎么将成千上万的号码快速导入手机呢?围绕这个问题再去思考、寻求解决方案,总之,在这样的思想指导下,你一定能慢慢的接近最终的目标。
技术滥用的后果
最终我帮助那个人实现了目的,本想将这个完整的过程记录下来分享给所有人,但有想到,如果这个解决方案被别有用心的人利用了,那岂不是为虎作伥、助纣为虐,这就回到了老生常谈的问题,技术无罪人有罪,任何技术都是中性的,用来干什么取决于人,天使可以用来创建天堂,魔鬼可以用来制造梦魇。
总结
受开源文化的熏陶,分享是程序员的美德,但对于技术分享,还是要多留个心眼,以免在不知情的情况下被人用来作恶。
三观一致的,可以
边栏推荐
- Making Pre-trained Language Models Better Few-Shot Learners
- 忍不住 - 发个新帖子【为什么把红圈的功能入口隐藏?需要移动到鼠标到位置驻停才显示?】- 请投票
- Word里表格跨页时自动断开,表格后留有空白部分,未布满整页,如何操作让表格上下页均匀布满?
- 期货开户前要第一时间确认手续费
- Toronto Research Chemicals农药检测丨Naled-d6
- R语言使用ggpubr包的ggbarplot函数可视化柱状图、设置add参数为mean_se和jitter可视化不同水平均值的柱状图并为柱状图添加误差线(se标准误差)和抖动数据点分布
- 机器人控制器编程实践指导书旧版-实践八 机器人综合设计
- Talking about Taishan crowdfunding system development technical description and dapp chain crowdfunding system development analysis
- 从Delta 2.0开始聊聊我们需要怎样的数据湖
- LeetCode 198:打家劫舍
猜你喜欢
Active users of mobile banking grew rapidly in June, hitting a half-year high
Colocate Join :ClickHouse的一种高性能分布式join查询模型
产品说明丨Android端使用MobPush快速集成方法
迪文发布新款2K高清DGUS智能屏
【深度学习21天学习挑战赛】4、初尝循环神经网络(RNN)——股票预测
「业务架构」业务能力的热图是什么,有啥用?
【图像分割】基于元胞自动机实现图像分割附matlab代码
本周四晚19:00知识赋能第六期第5课丨OpenHarmony WiFi子系统
Making Pre-trained Language Models Better Few-Shot Learners
Flexsim 发生器和暂存区设定临时实体流颜色和端口
随机推荐
The DGIOT platform displays the whole process code analysis of OPC reporting data in real time
【严重】Nps 鉴权绕过 0day 漏洞
c语言进阶篇:柔性数组
HDLBits: 在线学习 SystemVerilog(零)-在线“巡礼” HDLBits
Splitting and merging long markdown documents
Before opening a futures account, you must confirm the handling fee as soon as possible
Toronto Research Chemicals BTK抑制剂丨ACP-5197
机器人控制器编程实践指导书旧版-实践六 LCD液晶显示(点阵)
机器人控制器编程实践指导书旧版-实践八 机器人综合设计
中国芯片的营收首破万亿,优势凸显的成熟工艺产能将称霸全球
R语言使用oneway.test函数执行单因素方差分析(One-Way ANOVA)、使用数据集的子集数据进行单因素方差分析(subset函数筛选数据子集)
机器人控制器编程实践指导书旧版-实践四 步进电机(执行器)
【图像分割】基于元胞自动机实现图像分割附matlab代码
【Web3 系列开发教程——创建你的第一个 NFT(8)】如何开发一个成功的 NFT 项目 | NFT 社区建设技巧
leet面试150
设置iptables规则来保护CS服务器
背景视频铺满盒子
R语言检验时间序列的平稳性:使用fUnitRoots包中的adfTest函数检验时间序列数据是否具有平稳性(设置参数type为nc时、既不去除趋势也不进行中心化处理)
JNDI and RMI, LDAP
Mysql index, transaction and storage engine