[TOC]

一道简单的密码学:

代码coding:

import math
flag = xxx

data = list(map(ord,flag))
cip = []
for i in range(len(data)):
cip.append(math.e**data[i])
print(cip)
'''
[2.178203880729008e+47, 1.6094870669615087e+48, 7.307059979368028e+43, 9.889030319346894e+42, 2.3886906014249767e+50, 1.9862648361376436e+44,
2.6195173187490456e+53, 9.889030319346894e+42, 7.016735912097614e+20, 2.178203880729008e+47, 7.307059979368028e+43, 1.811239082889014e+41,
1.6094870669615087e+48, 5.920972027664636e+47, 214643579785915.7, 3.6379709476087856e+42, 7.307059979368028e+43, 5.399227610580139e+44,
3.989519570547194e+45, 5.920972027664636e+47, 1.811239082889014e+41, 3.5451311827611436e+52, 1.6094870669615087e+48, 6.493134255664421e+50,
3.23274119108484e+49, 1.811239082889014e+41, 1.2523631708422093e+29, 3.23274119108484e+49, 3.5451311827611436e+52, 4.375039447261315e+48,
2.3886906014249767e+50, 7.016735912097614e+20, 1.811239082889014e+41, 9.889030319346894e+42, 3.831008000716566e+22, 3.23274119108484e+49,
1.4093490824269349e+22, 1.4093490824269349e+22, 3.23274119108484e+49, 1.9355760420357097e+54]
'''

IDEA:

ord作为built-in function,返回Unicode字符对应的整数。
map()根据第一个参数提供的函数对指定序列第二个参数做映射。

data是一个整数列表集合

len(data)获取data(此处为list)的长度
range(a)输出从0到a的列表

双星号(**)将参数以字典的形式导入
math.e 返回数学常数“ e”的值,该值为2.718281828459045
math.exp(1)==math.e**1
True

exp(x)的实现水平远低于e**x。本质上,它是libc中函数的包装。
所说的函数可能是(在某种程度上)使用泰勒级数展开式直接计算值(或不确定其他数学方法,我不确定)。
append() 拼接

solution:

import numpy as np
data=[2.178203880729008e+47, 1.6094870669615087e+48, 7.307059979368028e+43, 9.889030319346894e+42, 2.3886906014249767e+50, 1.9862648361376436e+44,
2.6195173187490456e+53, 9.889030319346894e+42, 7.016735912097614e+20, 2.178203880729008e+47, 7.307059979368028e+43, 1.811239082889014e+41,
1.6094870669615087e+48, 5.920972027664636e+47, 214643579785915.7, 3.6379709476087856e+42, 7.307059979368028e+43, 5.399227610580139e+44,
3.989519570547194e+45, 5.920972027664636e+47, 1.811239082889014e+41, 3.5451311827611436e+52, 1.6094870669615087e+48, 6.493134255664421e+50,
3.23274119108484e+49, 1.811239082889014e+41, 1.2523631708422093e+29, 3.23274119108484e+49, 3.5451311827611436e+52, 4.375039447261315e+48,
2.3886906014249767e+50, 7.016735912097614e+20, 1.811239082889014e+41, 9.889030319346894e+42, 3.831008000716566e+22, 3.23274119108484e+49,
1.4093490824269349e+22, 1.4093490824269349e+22, 3.23274119108484e+49, 1.9355760420357097e+54]

cip=[]
for i in range(len(data)):
cip.append(int(np.log(data[i])))
print(cip)
flag=[]
for i in range(len(cip)):
flag.append(chr(cip[i]))
print(flag)

import numpy as np
data=[2.178203880729008e+47, 1.6094870669615087e+48, 7.307059979368028e+43, 9.889030319346894e+42, 2.3886906014249767e+50, 1.9862648361376436e+44,
2.6195173187490456e+53, 9.889030319346894e+42, 7.016735912097614e+20, 2.178203880729008e+47, 7.307059979368028e+43, 1.811239082889014e+41,
1.6094870669615087e+48, 5.920972027664636e+47, 214643579785915.7, 3.6379709476087856e+42, 7.307059979368028e+43, 5.399227610580139e+44,
3.989519570547194e+45, 5.920972027664636e+47, 1.811239082889014e+41, 3.5451311827611436e+52, 1.6094870669615087e+48, 6.493134255664421e+50,
3.23274119108484e+49, 1.811239082889014e+41, 1.2523631708422093e+29, 3.23274119108484e+49, 3.5451311827611436e+52, 4.375039447261315e+48,
2.3886906014249767e+50, 7.016735912097614e+20, 1.811239082889014e+41, 9.889030319346894e+42, 3.831008000716566e+22, 3.23274119108484e+49,
1.4093490824269349e+22, 1.4093490824269349e+22, 3.23274119108484e+49, 1.9355760420357097e+54]

cip=[]
for i in range(len(data)):
cip.append(int(np.log(data[i])))
print(cip)
flag=[]
for i in range(len(cip)):
flag.append(chr(cip[i]))
print(flag)

之所以使用int类型是因为调用numpy库求对数得到的结果默认为浮点数,产生TypeError: integer argument expected, got float的错误,所以转为int类型。

>>> 
================== RESTART: D:\Users\丁辰就看见\Desktop\practice.py =================
[109, 111, 101, 99, 116, 102, 123, 99, 48, 109, 101, 95, 111, 110, 33, 98, 101, 103, 105, 110, 95, 121, 111, 117, 114, 95, 67, 114, 121, 112, 116, 48, 95, 99, 52, 114, 51, 51, 114, 125]
['m', 'o', 'e', 'c', 't', 'f', '{', 'c', '0', 'm', 'e', '_', 'o', 'n', '!', 'b', 'e', 'g', 'i', 'n', '_', 'y', 'o', 'u', 'r', '_', 'C', 'r', 'y', 'p', 't', '0', '_', 'c', '4', 'r', '3', '3', 'r', '}']
>>>

参考资源:

https://blog.csdn.net/weixin_42228776/article/details/113713023

https://blog.csdn.net/m0_37038355/article/details/89182306