
解密前
14-5-24-20 21-16: "6-15-15-20-2-15-20 20-23-15: 7-18-21-14-11-12-5'19 7-18-5-22-5-14-7-5."
解密后
NEXT UP: "FOOTBOT TWO: GRUNKLE'S GREVENGE."
小彩蛋
112626 23-9-12-12 2-5 18-5-16-12-1-3-5-4 2-25 22-9-18-7-9-14-9-1 9-14 20-8-5 14-5-24-20 2-12-15-7
简介
A1Z26密码是一种简单的加密算法,它的原理是将输入的字符串按照字母表顺序转换为数字。比如a转换为1,b转换为2,以此类推。这种加密方法适用于一些不需要高级保密措施的场景,比如初学者的练习、暗示等。
A1Z26密码对照表
| 字符 | 数字 |
|---|---|
| A | 1 |
| B | 2 |
| C | 3 |
| D | 4 |
| E | 5 |
| F | 6 |
| G | 7 |
| H | 8 |
| I | 9 |
| J | 10 |
| K | 11 |
| L | 12 |
| M | 13 |
| N | 14 |
| O | 15 |
| P | 16 |
| Q | 17 |
| R | 18 |
| S | 19 |
| T | 20 |
| U | 21 |
| V | 22 |
| W | 23 |
| X | 24 |
| Y | 25 |
| Z | 26 |
JAVA实现:
下面是 Java 的 A1Z26 加解密示例代码:
import java.util.Scanner;
public class A1Z26 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入需要加密的字符串:");
String input = scanner.nextLine().toLowerCase();
String encryptResult = encrypt(input);
System.out.println("加密后结果为:" + encryptResult);
System.out.println("\n请输入需要解密的字符串,空格区分");
String cipher = scanner.nextLine().toLowerCase();
String decryptResult = decrypt(cipher);
System.out.println("解密后结果为:" + decryptResult);
scanner.close();
}
// 加密函数
private static String encrypt(String input) {
String[] chars = input.split("");
String result = "";
for (String s : chars) {
if (s.matches("[a-z]")) {
result += Integer.toString(s.charAt(0) - 'a' + 1) + " ";
} else {
result += s;
}
}
return result.trim();
}
// 解密函数
private static String decrypt(String cipher) {
String[] integers = cipher.split(" ");
String result = "";
for (String s : integers) {
if (s.matches("[1-9]\\d*")) {
result += (char) (Integer.parseInt(s) + 'a' - 1);
} else {
result += s;
}
}
return result;
}
}
首先使用 Scanner 从控制台获取用户的输入。在加密函数中,我们对输入的字符串进行了 A1Z26 加密,并返回加密后的结果。在解密函数中,我们对加密后的数字序列进行解密,并返回解密后的结果。将加解密函数放在一个类中,可以使代码更加清晰和易于维护。
示例输出:
请输入需要加密的字符串:Hello World!
加密后结果为:8 5 12 12 15 23 15 18 12 4 !
请输入需要解密的字符串:
8 5 12 12 15 23 15 18 12 4 !
解密后结果为:hello world!
以上就是 Java 的 A1Z26 加解密示例代码,你可以根据自己的需求进行修改和优化。

Python示例代码
以下是 Python 的 A1Z26 加解密示例代码:
import re
# 加密函数
def encrypt(input_str):
result = ""
for char in input_str:
if char.islower(): # 判断是否为小写字母
result += str(ord(char) - 96) + " "
else:
result += char
return result.strip()
# 解密函数
def decrypt(cipher_str):
result = ""
integers = re.findall('\d+', cipher_str) # 使用正则表达式提取数字
for integer in integers:
result += chr(int(integer) + 96)
return result
# 测试样例
input_str = "hello world!"
cipher_str = encrypt(input_str)
print(f"加密后:{cipher_str}")
plain_str = decrypt(cipher_str)
print(f"解密后:{plain_str}")
在加密函数中,我们遍历输入字符串的每一个字符,对于每一个小写字母,使用 ord()
函数获取其对应的 ASCII 码,并减去 96,得到其在本题中所代表的数字,将其添加到结果字符串中。对于非小写字母字符,直接添加到结果字符串中。
在解密函数中,我们使用正则表达式 re.findall()
函数提取密文中的数字,并将其转换为 ASCII 码对应的字符。
示例输出:
加密后:8 5 12 12 15 23 15 18 12 4!
解密后:hello world!
以上就是 Python 的 A1Z26 加解密示例代码,你可以根据自己的需求进行修改和优化。

Js示例代码
以下是 JavaScript 的 A1Z26 加解密示例代码,配合一个简单的 HTML 页面使用:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>A1Z26加解密</title>
<script>
// 加密函数
function encrypt(inputStr) {
var result = "";
for (var i = 0; i < inputStr.length; i++) {
var charCode = inputStr.charCodeAt(i);
if (charCode >= 97 && charCode <= 122) { // 判断是否为小写字母
result += (charCode - 96) + " ";
} else {
result += inputStr[i];
}
}
return result.trim();
}
// 解密函数
function decrypt(cipherStr) {
var result = "";
var integers = cipherStr.match(/\d+/g); // 使用正则表达式提取数字
for (var i = 0; i < integers.length; i++) {
result += String.fromCharCode(parseInt(integers[i]) + 96);
}
return result;
}
// 加密解密操作
function operate() {
var inputStr = document.getElementById("input-text").value;
var mode = document.getElementById("mode").value;
var outputStr = "";
if (mode == "encrypt") {
outputStr = encrypt(inputStr);
} else if (mode == "decrypt") {
outputStr = decrypt(inputStr);
}
document.getElementById("output-text").value = outputStr;
}
</script>
</head>
<body>
<h1>A1Z26加解密</h1>
<p>请输入要加密/解密的字符串:</p>
<textarea id="input-text" rows="5"></textarea>
<br>
<label for="mode">请选择操作类型:</label>
<select id="mode">
<option value="encrypt">加密</option>
<option value="decrypt">解密</option>
</select>
<br>
<button onclick="operate()">执行操作</button>
<br>
<p>处理结果:</p>
<textarea id="output-text" rows="5" readonly></textarea>
</body>
</html>
在这个 HTML 页面中,我们定义了两个函数 encrypt()
和 decrypt()
,分别用于加密和解密操作。
在加密函数中,我们遍历输入字符串的每一个字符,使用 charCodeAt()
函数获取其 Unicode 码点值,并判断是否为小写字母。如果是小写字母,则减去 96(‘a’ 的 Unicode 码点值为 97),得到其在本题中所代表的数字,将其添加到结果字符串中。对于非小写字母字符,直接添加到结果字符串中。最后使用 trim()
函数去除字符串首尾的空格。
在解密函数中,我们使用正则表达式 match()
函数提取密文中的数字,并将其转换为 ASCII 码对应的字符后添加到结果字符串中。
此外,我们还定义了一个名为 operate()
的函数,用于根据用户选择的操作类型进行加密或解密操作,并将结果输出到 HTML 页面上。
注意:为了方便示例演示,本代码将所有 JavaScript 代码、CSS 代码、HTML 代码全部写在了一个文件中,实际上大型的 Web 应用程序会将它们分别封装在不同的文件中,以便管理和维护。
示例输出:

参考文献:
1. CSDN . whoisclown . CTF训练(密码学)——a1z26 . https://blog.csdn.net/weixin_49270591/article/details/115690139
2. Bilibili . 安迪视频 . 【怪诞小镇】#18第十四集彩蛋,细节,密码与解析(无底洞) . https://www.bilibili.com/video/BV1GJ411i7iz/?spm_id_from=333.788&vd_source=ba50ab08f80d173365b7101b8b4e2379
3. 知乎 . 幻仔牛奶 . 怪诞小镇中都有哪些彩蛋和谜题 . https://www.zhihu.com/tardis/sogou/ans/92182104




