MQC加密法
前言:此解密算法于2023年学校无聊的数学课上创作完成,耗时一小时,令全班惊叹,现在我把它总结出来,供大家使用。
说实话,一开始我和班里的各种队委用它对付班上一个特别爱骂人的,把想骂他的话加密后写在纸上,再扔给他,这样就既能不被举报骂人,又能骂那个讨厌鬼了
(实际上,那个骂人的知道我们在骂他,就把纸条给了班主任。班主任对着纸条瞪了一分钟,愣是没明白这是啥意思,于是扔进了垃圾桶。我们在一边儿笑趴了~哈哈哈哈!)
好了,正文开始!
Part 1:定义新运算
加密法就要有个特殊符号,现在向大家隆重推出
此符号全名“取余乘”,长这个样:
它的作用是这样的:A
举个栗子:5
这里有一些需要注意的地方:
-
- 这种运算读作
qc ,但写作o| x,可以理解为把%竖过来,并把右边的圆圈改成乘号。
Part 2:字母对应的数字
其实就是这个字母排在字母表的第几个,给张表:
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
明白了吗?
注意事项:大小写字母不区分,根据语境自己思考大写还是小写
Part 3:加密格式
注意,这一部分很重要!
我们把每个字母对应的数字用
汉语拼音:[...][...][...]{}
英文单词:[...][...][...][...][...][...]
注:...是字母对应的数字通过
Part 4:加密方法
例:大傻子
①将每个转化成汉语拼音,并在最后加上{},里面是这个字的声调。da{4} sha{3} zi{1}
②将每个字母都用[]括起来,并且转化成数字。[4][1]{4} [19][8][1]{3} [26][9]{1}
③把每个数字用
④最后,把它写在纸上吧~
考虑到手写太费手和脑子了,我给各位写了一份加密程序。
#include <bits/stdc++.h>
using namespace std;
void fun(char s)
{
int a = s - 'a' + 1;
printf("[");
switch(a)
{
case 1:printf("1]");break;
case 2:printf("3 o|x 2]");break;
case 3:printf("2^2 - 1]");break;
case 4:printf("5 o|x 3 - 2]");break;
case 5:printf("6 o|x 4 * 5 / 8]");break;
case 6:printf("5 o|x 3]");break;
case 7:printf("9 o|x 7 / 2]");break;
case 8:printf("15 o|x 13 %9]");break;
case 9:printf("3^2]");break;
case 10:printf("8 o|x 5 - 5]");break;
case 11:printf("51 % 20]");break;
case 12:printf("7 o|x 4]");break;
case 13:printf("10 o|x 9 + 2^2]");break;
case 14:printf("9 o|x 2 % 23]");break;
case 15:printf("8 o|x 6 / 4 * 5]");break;
case 16:printf("2 * 5 + 5 o|x 3]");break;
case 17:printf("4^2 + 2 o|x 1]");break;
case 18:printf("11 o|x 2]");break;
case 19:printf("5 o|x 6 - 11]");break;
case 20:printf("9 o|x 5]");break;
case 21:printf("11 o|x 7 - 7]");break;
case 22:printf("13 o|x 11]");break;
case 23:printf("5^2 - 3 o|x 2]");break;
case 24:printf("10 o|x 4]");break;
case 25:printf("32 o|x 4 + 5^2]");break;
case 26:printf("15 o|x 13]");
}
}
int main()
{
while(true)
{
char s[101];
scanf("%s",s);
int n = strlen(s);
for(int i = 0;i <= n - 1;i++)
{
fun(s[i]);
}
printf("\n");
}
return 0;
}
注意,此程序仅能加密无数个连续的小写字母串,所以请先将每个字写成拼音,再输入加密,但声调需要自己加。
Part 5:解密方法
例:[5 o|x 3 - 2][8 o|x 6 / 4 × 5][9 o|x 7 / 2][6 o|x 4 × 5 / 8]
①把[]里的式子按运算顺序算成数字。[4][15][7][5]
②将数字转化成字母。[d][o][g][e]
③去掉[],如果解密的不是汉语拼音,那么就完成了。(比如例子,原文是doge)但如果是,那么还要将声调加上,并按照小学一年级的汉语拼音法则看拼音写汉字拼出来,就能得到最终的意思啦~