华为实习密文cipherText破解

博主为查看华为实习生招聘进展,在未学过html、js和RSA的情况下,凭借C语言功底现学现用。通过开启开发者模式查看代码,找到私钥和加密方式RSA,经查阅资料、修改程序,最终成功解密华为招聘职位进展网页的密文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多小伙伴找我破解密文,但是最近比较忙,所以决定公布破解密文的程序。

连接如下:华为实习密文cipherText破解

分割线以下为之前的内容


前段时间面试了华为实习生,还在等待offer中。

之前一直可以通过一个网址查看进展,无奈最近内容被加密了。

之前能看的网址:http://career.huawei.com/reccampportal/services/portal/portaluser/queryMyJobInterviewEvolve

现在变成了这样:

为了能查看进展,只好开始学习html、js等内容 。

之前完全没学过 html 和 js ,对这些一窍不懂,但是还好,毕竟我是以 C 语言起家的,功底还在。

缺的只是语法和函数,补补这方面的内容应该能看懂或者是对一些程序小修小改。

说干就干,先从华为招聘职位进展网页入手,开启开发者模式,查看代码。

大概能了解到他在干嘛,继续翻。

找到两个神奇的东西

打开看看

。。。。。什么鬼,密密麻麻的。不懂,想溜。

为了能看懂,中途学习了一下js的内容,附上网址:

https://www.runoob.com/js/js-tutorial.html

https://blog.youkuaiyun.com/opera95/article/details/76605817

看了半天,懂了一丢丢,但是还是有点混乱。

但是细想一下,既然是加密,那应该会出现像 “key” 、“sishi”(哈哈哈,拼音起名法,私匙)之类的东东。Ctrl+F 一下,果然找到了 PrivateKey (为了防止私匙外泄,还是打个码吧~),然后还找到了加密方式:RSA。

有了私匙和加密方式,可以开搞了。

又查了一些资料RSA加密的资料

https://www.jianshu.com/p/1de40d21c413

https://www.cnblogs.com/zhujiabin/p/7118126.html

找到两个好用的东西(这两个一会儿要用到)

https://blog.youkuaiyun.com/xfyc002/article/details/85235491

http://code.jquery.com/jquery-1.8.3.min.js

再次补一下 js 语法,改一下上面的程序,变成适合我们的,然后结果就出来了。

后来进一步学习菜鸟教程的js函数,发现一个叫 decodeURIComponent() 的函数。

地址:https://www.runoob.com/jsref/jsref-decodeuricomponent.html

这就意味着我们不需要折腾上面那个程序和对应的包了,直接在华为职位进展面页进行解码显示。

fetch(
  "http://career.huawei.com/reccampportal/services/portal/portaluser/queryMyJobInterviewEvolve?reqTim=" +
    new Date().getTime()
)
  .then(res => res.json())
  .then(data => {
    var n = null;
    var i = new JSEncrypt();
    i.setPrivateKey(
      "钥匙保密"
    ),
      (n = i.decryptLong2(data.cipherText)) &&
        (n = JSON.parse(decodeURIComponent(n)));
    console.log(JSON.stringify(n, 0, 4));
  });

(PS:私匙不公布,相要看的把密文发给我,我帮你解码。)

在电脑前坐了6个小时后,终于成功解密。在之前没学过 html 、 js 和 RSA 的情况下,靠着 以前 C 语言的功力,现学现用,成功拿下。

 

 

### 如何在编程中将单个字符追加到字符串变量 在许多现代编程语言中,字符串通常被设计为不可变对象。这意味着一旦创建了一个字符串,其内容就不能更改。然而,可以通过重新赋值的方式实现向字符串追加新字符的效果。 以下是几种常见编程语言中的方法: #### Python 中的实现方式 Python 的字符串也是不可变的,因此无法直接修改已有的字符串。可以使用 `+=` 运算符来创建一个新的字符串并将其赋值给原变量[^1]。 ```python ciphertext = "example" character_to_add = 'A' ciphertext += character_to_add # 将字符 A 添加到 ciphertext 变量中 print(ciphertext) # 输出 exampleA ``` 此操作实际上是创建了一个新的字符串 `"exampleA"` 并将其重新分配给了变量 `ciphertext`。 #### C++ 中的实现方式 C++ 提供了多种处理字符串的方法。如果使用标准库中的 `std::string` 类型,则可以直接调用成员函数 `push_back()` 或者使用 `operator+=` 来完成这一任务。 ```cpp #include <iostream> #include <string> int main() { std::string ciphertext = "example"; char character_to_add = 'A'; // 方法一:使用 push_back() ciphertext.push_back(character_to_add); // 方法二:使用 operator+= ciphertext += character_to_add; std::cout << ciphertext; // 输出 exampleA return 0; } ``` 两种方法均能有效工作,在实际开发过程中可以根据个人习惯选择其中之一。 #### Java 中的实现方式 Java 中的 String 同样是不可变类,所以每次对其执行拼接操作都会返回一个新的实例。对于简单的场景可采用 `concat()` 函数或者 `+`/`+=` 操作符;而对于频繁更新的情况推荐使用 StringBuilder 类以提高效率。 ```java public class Main { public static void main(String[] args) { String ciphertext = "example"; char characterToAdd = 'A'; // 使用 concat 方法 ciphertext = ciphertext.concat(Character.toString(characterToAdd)); // 或者使用 '+=' 操作符 ciphertext += Character.toString(characterToAdd); System.out.println(ciphertext); // 输出 exampleA // 如果需要多次添加建议改用 StringBuilder StringBuilder sbuilder = new StringBuilder("example"); sbuilder.append('A'); System.out.println(sbuilder.toString()); // 输出 exampleA } } ``` 以上展示了不同环境下如何高效地把单一字符附加至现有字符串的技术手段[^2]。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值