本文介绍了基于Logistic Map的加密方法,通过Logistic Map生成的混沌序列对明文数据进行置换或替换,实现加密。Logistic Map加密具有非重复性和难以预测的特点,可将ASCII字符映射到图像或数据块中,通过调整Logistic Map的参数可以改变加密效果。
我一直在阅读 Brian Klaas 博士和 John Murray 的《侥幸:机会、混沌以及我们所做的一切为何重要》[链接],它概括了我们在世界上所做的一切都会对其他一切产生影响。因此,即使是最小的事件也可能导致我们生活以及他人生活的重大变化。
免费加入 Medium,获取这位作者的更新。 通过混沌方法,我们有蝴蝶效应,微小的变化可能导致大量的变化——就像一个国家的蝴蝶扇动翅膀可能导致另一个国家发生飓风一样 [链接]。
通过 Logistic 映射加密,我们可以获取明文值并将其转换为图像或块。然后,我们使用混沌序列来置换或替换密文数据。Logistic 映射基于以下公式:
这种映射创建的密钥通常是非重复的(与伪随机序列不同)且难以预测。我们可以使用 [链接] 映射我们所有的 ASCII 字符(总共 256 个):
import base64
import sys
def logisticEqWithRounding(r,x0,char_set,decimal_places):
output = []
x = x0
for i in range(char_set):
output.append(round(x,decimal_places))
x = r*x*(1-x)
return output
def encrypt(inputString,key1,key2):
valMap = logisticEqWithRounding(key1,key2,255,6)
print("Mapping: ",valMap) # 映射
encrypted = [(base64.b64encode((str(valMap[ord(char)]).encode("ascii")))).decode("ascii") for char in inputString]
return " ".join(encrypted)
def decrypt(inputString,key1,key2):
valMap = logisticEqWithRounding(key1,key2,255,6)
decrypted = [chr(valMap.index(float(base64.b64decode(x).decode()))) for x in inputString.split()]
return "".join(decrypted)
message="Hello"
key1=3.56995 # r
key2=0.1 # x0
if (len(sys.argv)>1):
message=str(sys.argv[1])
if (len(sys.argv)>2):
key1=float(str(sys.argv[2]))
if (len(sys.argv)>3):
key2=float(str(sys.argv[3]))
enc = encrypt(message,key1,key2)
print(f"Encrypted {str(enc)}" ) # 加密
print(f"Decrypted {decrypt(enc,key1,key2)}") # 解密
一个使用消息“abc”,以及 r=3.7 和 x_0=0.1 的示例运行给出 [链接]:
Mapping: [0.01, 0.03663, 0.130566, 0.42002, 0.901332, 0.329051, 0.816873,
0.553488, 0.914415, 0.289564, 0.761152, 0.672658, 0.8147, 0.558567, 0.912309,
0.296006, 0.771029, 0.653209, 0.83815, 0.501923, 0.924986, 0.256731, 0.706034,
0.767935, 0.65938, 0.831013, 0.519592, 0.92358, 0.261147, 0.713912, 0.755694,
0.683096, 0.800961, 0.589863, 0.895121, 0.347353, 0.838786, 0.50033, 0.925,
0.256689, 0.705959, 0.76805, 0.659152, 0.831281, 0.518936, 0.923673, 0.260854,
0.713393, 0.756514, 0.681542, 0.803058, 0.585177, 0.898156, 0.338446, 0.828431,
0.525892, 0.92252, 0.264466, 0.719738, 0.746347, 0.700459, 0.77632, 0.642495,
0.849872, 0.472081, 0.922116, 0.265727, 0.72193, 0.742764, 0.706944, 0.766545,
0.662129, 0.827743, 0.527563, 0.922189, 0.265498, 0.721533, 0.743415, 0.705772, 0.768334, 0.658588, 0.831945, 0.517307, 0.923892, 0.260168, 0.712179, 0.758426, 0.677899, 0.807903, 0.574225, 0.904615, 0.319259, 0.804131, 0.582765, 0.899655, 0.334021, 0.823069, 0.538818, 0.919425, 0.274107, 0.736197, 0.718581, 0.748223, 0.697025, 0.78137, 0.632074, 0.860459, 0.444258, 0.913503, 0.292355, 0.76547, 0.664245, 0.825187, 0.533738, 0.920789, 0.269867, 0.729043, 0.730895, 0.727744, 0.733091, 0.723974, 0.739391, 0.712959, 0.757199, 0.680241, 0.804799, 0.581261, 0.900568, 0.331319, 0.819723, 0.546777, 0.916904, 0.281906, 0.74901, 0.695578, 0.783473, 0.62768, 0.864682, 0.432926, 0.908354, 0.308015, 0.788624, 0.616776, 0.874545, 0.40595, 0.892272, 0.355653, 0.847907, 0.477155, 0.923069, 0.262747, 0.71673, 0.751203, 0.691518, 0.789287, 0.615359, 0.875762, 0.402572, 0.889878, 0.362581, 0.855129, 0.458369, 0.918587, 0.276703, 0.740513, 0.710969, 0.760321, 0.674262, 0.812641, 0.563345, 0.910153, 0.302564, 0.780771, 0.63332, 0.859235, 0.447515, 0.914808, 0.288358, 0.759268, 0.676286, 0.810017, 0.569392, 0.907184, 0.311546, 0.793595, 0.606068, 0.883373, 0.381192, 0.872774, 0.410848, 0.895592, 0.345976, 0.837224, 0.504237, 0.924934, 0.256896, 0.706332, 0.76748, 0.660282, 0.829946, 0.522202, 0.923176, 0.262411, 0.716141, 0.752148, 0.68976, 0.791768, 0.610025, 0.880209, 0.390131, 0.880337, 0.389773, 0.880045, 0.390593, 0.880712, 0.388717, 0.87918, 0.393025, 0.882658, 0.383219, 0.87454, 0.405962, 0.892281, 0.355629, 0.847881, 0.477222, 0.92308, 0.262711, 0.716668, 0.751304, 0.691332, 0.789551, 0.614792, 0.876244, 0.40123, 0.888904, 0.365388, 0.857954, 0.450915, 0.916085, 0.28443, 0.753059, 0.688056, 0.794149, 0.604862, 0.884315, 0.378518, 0.870396, 0.417386, 0.899747, 0.333748, 0.822733, 0.539621, 0.919192, 0.27483]
Encrypted MC41Mzg4MTg= MC45MTk0MjU= MC4yNzQxMDc=
Decrypted abc
r 值的微小变化,例如 r=3.701,会导致映射发生巨大变化 [链接]:
Mapping: [0.1, 0.33309, 0.822144, 0.541172, 0.918976, 0.275572, 0.738839,
0.71413, 0.755553, 0.683548, 0.800564, 0.590907, 0.894665, 0.348781, 0.840618,
0.495857, 0.925186, 0.25617, 0.705214, 0.76939, 0.656665, 0.834413, 0.511359,
0.924772, 0.257473, 0.707559, 0.765808, 0.663759, 0.826, 0.531922, 0.921479,
0.267789, 0.725684, 0.736745, 0.717815, 0.749662, 0.694562, 0.785151, 0.624318,
0.868051, 0.423906, 0.90382, 0.321725, 0.807625, 0.575012, 0.904425, 0.319915,
0.805225, 0.580457, 0.901292, 0.329258, 0.817356, 0.552505, 0.915047, 0.287701, 0.758442, 0.678051, 0.80792, 0.574341, 0.904796, 0.318805, 0.80374, 0.583803, 0.899258, 0.335285, 0.824838, 0.534721, 0.920788, 0.269941, 0.729366, 0.730545, 0.728538, 0.731948, 0.726136, 0.73599, 0.719136, 0.747526, 0.698493, 0.779433, 0.636266, 0.856528, 0.454807, 0.917691, 0.279552, 0.745391, 0.702388, 0.773653, 0.648097, 0.844077, 0.487091, 0.924633, 0.25791, 0.708343, 0.764601, 0.66613, 0.823106, 0.538875, 0.919657, 0.27346, 0.735313, 0.720317, 0.745605, 0.702, 0.774235, 0.646917, 0.845366, 0.483804, 0.924279, 0.259022, 0.710332, 0.761519, 0.672131, 0.815593, 0.556634, 0.91338, 0.292813, 0.76638, 0.662634, 0.827359, 0.528635, 0.922215, 0.265489, 0.721711, 0.743324, 0.706126, 0.768001, 0.659427, 0.831182, 0.519318, 0.923869, 0.260311, 0.712624, 0.757932, 0.679026, 0.806631, 0.577272, 0.903152, 0.323722, 0.810245, 0.569022, 0.907618, 0.310319, 0.792092, 0.60949, 0.880882, 0.388341, 0.879107, 0.393334, 0.883142, 0.381952, 0.873676, 0.408467, 0.894242, 0.350016, 0.841996, 0.492377, 0.925035, 0.256647, 0.706074, 0.768081, 0.659268, 0.831369, 0.518859, 0.923934, 0.260107, 0.712263, 0.758499, 0.677942, 0.808064, 0.574013, 0.904976, 0.318265, 0.803015, 0.585431, 0.898238, 0.338294, 0.828473, 0.525931, 0.922761, 0.263781, 0.718736, 0.748174, 0.697305, 0.781173, 0.632655, 0.860122, 0.445274, 0.914166, 0.290405, 0.762665, 0.669908, 0.818407, 0.550032, 0.915985, 0.284814, 0.753876, 0.68671, 0.796231, 0.600477, 0.887886, 0.368413, 0.861166, 0.442487, 0.913008, 0.293949, 0.768117, 0.659197, 0.831453, 0.518654, 0.923962, 0.260018, 0.712104, 0.758749, 0.677464, 0.808693, 0.572577, 0.905755, 0.315927, 0.79985, 0.592493, 0.893588, 0.351922, 0.844098, 0.48704, 0.924628, 0.257925, 0.708371, 0.764558, 0.666213, 0.823003, 0.539121, 0.919586, 0.273681, 0.735684, 0.719671, 0.746656, 0.700084, 0.777086, 0.6411, 0.851567, 0.46781, 0.921415, 0.267987, 0.726025, 0.736176, 0.718812, 0.748051, 0.69753, 0.780844, 0.63334, 0.859448, 0.44707, 0.914881, 0.288209, 0.759241]
Encrypted MC45MTk2NTc= MC45MTk2NTc= MC45MTk2NTc=
Decrypted aaa
你可以在此处阅读有关混沌理论在图像加密中的应用的更多信息:
- 原文链接: billatnapier.medium.com/...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!