如果你穿越到galgame,女主是一个可爱,loli,学霸,天然呆,人肉计算器
你想当男主,但是你的数学老师是一个大反派,看不得班上同学谈恋爱怎么办?
不要慌,故事背景设定在初高中,我们写一个这个年纪也能看懂的方程出来.
y^2=x^3+7
然后你在纸条上写道,让我们用这个美丽的方程进行通信吧!
女主一看,秒懂,好了,如果你不懂,你就得学学了.
现在,让我们把它画出来,大概是这个样子(请选择性忽略y=0没闭合问题)
如果在曲线上挑2点A,B,连起来,与曲线交于一点,并做其对称点C
定义该运算为
A+B=C
当然,可能存在A=B的情况,如果如此,那么连线就会变为该点的切斜,假设这种情况,我们设一个点P,那么就有
P+P=2P
如下图所示
根据上述运算规则,我们可以定义一个原点X,一个数字k,并求得最终的某点Y
Y=kX
为了演示,我们假设k=9,那么你可以这样运算
Y=X+X+X+X+X+X+X+X+X
还可以这样算(当然,为什么这样算的详细证明可以自己找paper,作为一个初高中galgame的设定,主线是谈恋爱而不是撸paper,你可以直接用)
2X=X+X
4X=2X+2X
8X=4X+4X
Y=8X+X
也就是说如果我们知道k和X,要算出Y是可以"抄近道"的,但是,如果我们只知道Y和X,想求出k怎么办
Y=?X
如果k是一个非常大的数字,你会发现,这是很难的,你需要通过
Y=X+X+X......+X
不断地尝试过去,也就是说正向运算要比逆向运算容易的多。
现在,刺激的来了,当然,邪恶的数学老师知道你们在传纸条,而且他一定会偷偷看你们在纸条上写什么
所以,方程他是知道的,我们假设这个曲线上有个原点G,那么他也是知道的
但是你和女主分别用猜的方式分别想一个k1,k2,并各自保存,然后将它与G乘运算,得到P1,P2
k_1*G=P_1
k_2*G=P_2
然后你们再通过纸条的手段交换P1和P2,拿到对方的P后,将它与与自己手上的k相乘,于是显然有
k_1*P_2=S=k_2*P_1
邪恶的数学老师只通过G、P1、P2能推导出S么?你发现这是很难办到的,因为要求出S我们就需要至少知道k1或k2中的一个,而上面我们说了逆运算本身就是很难算的。如果你们的k挑的比较大,那么邪恶的数学老师哪怕是拉马努金转世,他也注意不到这个S是什么
有了S,剩下的事就好办多了,你可以把S当做下次对称加密的通信的密钥,当然作为一个初中高中生,邪恶的数学老师显然对恋爱的仇恨程度也没有大到要挑战椭圆曲线加密体系(不然他也不会只是当个数学老师了),对话长度不长的话直接用S当Masker就行了.
接下来?接下来当然是dokidoki的galgame恋爱时间啦