程序员老鬼

被裁后去了一家上市公司年薪 35w,现在老婆老是说我只想躺平了,不思进取了~

刚看到一个贴子,一个年薪35w的程序员吐槽自己从蚂蚁裁员后转到上市公司,薪水降了,但老婆却一直说他不思进取,想躺平了。

Image

我觉得这事儿挺有意思的。拿高薪并不代表永远进步,尤其是在行业红利过后的今天。咱们程序员,很多时候工资的高低不完全是因为能力强,而是踩对了行业的风口。

但话说回来,能达到35w年薪,已经是很多人的目标了。不是每个人都要在薪资上持续突破,能在合理范围内保持舒适、稳定,做好工作本身,也是一种智慧。

人生没有标准答案,找到适合自己的节奏,反而是更为重要的。【备注:文末可领最新资料】

算法题:破解保险箱

哦,说到破解保险箱的事儿,想当年我和几个小伙伴在公司搞那个啥... 就是做个简单的项目,模拟一下破解保险箱密码的过程。你们知道吧,刚开始看起来没啥难度,反正就是输入密码,不对就不让进,但做起来才发现其实可以做得很有意思。

其实说白了,就是什么都没有做过的人,看到那种简单的四位数密码,感觉应该很简单嘛,对吧。像那种0000到9999的密码,简单的暴力破解就行了。你看,咱们可以用Java写一个循环,然后一个个试,直到试到那个对的为止。要不然怎么说,编程其实就是不断试错嘛。

我记得我当时就这么写的。你要知道,密码这种东西,要是简单得话就直接暴力试,一定能找出来。刚好,我们设定了一个假设密码“1234”,这不就直接暴力破解了嘛。

代码挺简单的,我把它写得像这样:

publicclassSafeCracker{
publicstaticvoidmain(String[] args){
        String correctPassword = "1234";  // 假设的密码

for (int i = 0; i <= 9999; i++) { // 从0000到9999
            String password = String.format("%04d", i);  // 确保每个密码是四位数

if (checkPassword(password, correctPassword)) { // 检查密码是否对
                System.out.println("密码是: " + password);  // 找到密码
break;
            }
        }
    }

// 这个函数检查密码是不是对的
publicstaticbooleancheckPassword(String attempt, String correctPassword){
return attempt.equals(correctPassword);  // 密码匹配就返回true
    }
}

你看,这代码有点意思吧,就是个for循环从0000到9999把每个密码都试一遍。其实挺直白的,就是格式化一下,确保每次密码是四位数的,然后检查密码对不对。如果对了,直接打印出来,结束循环。就是这么简单。

我还记得当时有个同事看我做这个,直接笑了:“你这是暴力破解吧,简单得很。”但是你们知道的,暴力破解是最直观的方法,毕竟很多时候,密码设置简单的,根本就没啥防御机制,最糟糕也就这么做了。

不过我发现,随着密码复杂度的提高,这种方式就有点不太行了。比方说,如果密码是字母和数字混合的,那就更麻烦了,得遍历更多的组合,时间复杂度一下就上去了。如果再加上一些符号,基本上就是个时间灾难。

而且,现实中不会有这么简单的事。我们可能碰到的是一些带有加密机制的保险箱,像加密算法AES、RSA啥的,想暴力破解就有点不现实了。你说,如果密码是128位的那种,暴力破解得等到地球老了吧。要是你有时间,还是去学点密码学吧,或者直接用那些高端工具吧,像加密破解工具啥的。

所以,虽然暴力破解是最简单的思路,但要是真遇到复杂的加密,你就得准备好做更多的功课了。反正从我的经验来看,暴力破解就算了,也别试图破解那种非常复杂的加密系统,不然累死你也没结果。

对了,咱们说到这儿,你们知道,暴力破解密码的代码其实并不复杂,最麻烦的倒是密码设置的复杂度和加密技术的问题了。要不然真像我写的这种,四位数的密码,直接暴力破解,分分钟搞定。

行了,话说回来,如果真碰到这种加密得很复杂的情况,就别想着直接暴力破解了,应该有更好的方法去解决——不过先学好基础的这些,也能给你打好基础,不然啥都不懂,后面遇到复杂的你就知道了。

-END-

我为大家打造了一份RPA教程,完全免费:https://www.songshuhezi.com/rpa.html

最后给大家分享一份不错的副业资料,点击下方公众号,回复关键字: 副业 领取,也可以链接我领取,微信:hls404