tl;dr。本来想只写牛顿的那个编码,可是写着发现像是读书笔记了,既然这样,那就混杂在一起了。

微积分

最近在看《微积分的力量》,挺有趣的一本书,讲述了微积分的历史。包含不少有意思是案例,比如阿基米德如何计算圆的面积。用切面去切一个圆锥体,可以得到一个椭圆,如何计算椭圆的面积。如何计算任意一条曲线下方的面积。各种有意思的问题。还是先写一写主题。

牛顿的编码

6 accdae 13 eff 7 i 3 l 9 n 4 o 4 qrr 4 s 8 t 12 vx
书中写道,牛顿在和莱布尼茨通信时,提到他的《流数术与无穷级数》时,利用了这段编码隐藏起来了,并没有把内容告诉莱布尼茨。通过这段编码,牛顿展示出了,“我知道你不知道的东西”,等将来发表的时候,就可以知道他提到的内容他确实比你早知道。
看到这段文字,我想起来好几个案例,好几个做安全的人,之前会发漏洞poc的hash。内容还不能发表,但是可以通过hash,将来发表的时候,你们就可以知道我当时是知道这个内容的。
因为hash是单向散列函数。知道hash值,无法反向推算出原来的内容。(彩虹表是正向计算然后查询的。)另一方面,是对应hash函数的碰撞率,非常低,不会那么容易就碰撞出同一个hash值,这样基本上可以做到一对一。(当然现在已经是可以对md5做碰撞的了。)

通过引用3和4,我们知道牛顿使用的是anagram(易位构词游戏)。引用5中可以发现,就是打乱字母的顺序,重新构词。比如silent变成listen。牛顿的编码中,并没有重新组成有意义的语句。使用数字来表示后面的字母出现的次数。当然我们根据一致的结果,发现u和v要算成一个,同时t少了一个。这一点我们在6中也可以发现同样的说明。当我们拿着这段拉丁文去搜索时,并不能找到牛顿直接说过这句话。不过,这也是十分接近这个编码的语句了。

词频统计:

originMsg ciperMsg
: 10
, : 1
. : 1
: : 1
a : 7
c : 2
d : 1
e : 14
f : 2
i : 7
l : 3
n : 9
o : 4
q : 4
r : 2
s : 4
t : 9
u : 7
v : 5
x : 1




a : 7
c : 2
d : 1
e : 14
f : 2
i : 7
l : 3
n : 9
o : 4
q : 4
r : 2
s : 4
t : 8
v : 12
x : 1

其它

书中还有一个压缩案例,是关于一年中日长时间的统计。由于日长时间可以拟合成一个正弦波,那么就可以利用有限来控制无限。只需要已知的几个参数,就可以控制一条正弦波,无论有多少个点,如果都在正弦波上面,那么只需要这几个参数,就可以确定无数个点的位置。这样就是一种压缩方式。
还有夹逼法确定π的上下限,即便你是一个无理数,你的上限和下限是确定的,你也逃不出这个范围。 无穷小,无穷小比你想象的任何数都要小,但是大于0.

词频统计程序

def charcounts(inputstr):
	oricounts = {}
	for i in inputstr.lower():
		#print(i)
		if i in oricounts.keys():
			oricounts[i] += 1
		else:
			oricounts[i] = 1

	for k in sorted(oricounts):
		print(k,oricounts[k])
	print("---------")

originMsg = "Data aequatione quotcunque fluentes quantitates involvente, fluxiones invenire: et vice versa."
ciperMsg = 6*"a"+"ccdae"+ 13 *"e"+"ff"+ 7 *"i" +3 *"l" +9 *"n" +4 *"o" +4 *"q"+"rr" +4 *"s" +8 *"t" +12 *"v"+"x"

charcounts(originMsg)
charcounts(ciperMsg)

引用

  1. https://slidetodoc.com/newton-versus-leibniz-la-battaglia-dei-giganti-maurizio/
  2. https://books.google.com/books?id=z4c7AQAAIAAJ&pg=PA264&lpg=PA264&dq=6accdae13&source=bl&ots=TT-fPQUJV8&sig=ACfU3U28Pp-rr3A2QNDGkbooBmOje-ZCQQ&hl=zh-CN&sa=X&ved=2ahUKEwjI9-Ku44nyAhW0FVkFHcKCDqcQ6AEwBnoECAwQAw#v=onepage&q=6accdae13&f=false
  3. http://hist.science.online.fr/storie/IERI/NewtonVoltaireEmilie/Newton%20vs_%20Leibniz.htm
  4. https://www.cracked.com/article_18761_6-real-world-da-vinci-codes-that-arent-full-crap.html
  5. https://zh.wikipedia.org/wiki/%E6%98%93%E4%BD%8D%E6%9E%84%E8%AF%8D%E6%B8%B8%E6%88%8F
  6. https://www.mathpages.com/home/kmath414/kmath414.htm