求助,一串字符串为数字,需要将每个数字进行加密,怎么简单点?

2018-01-13 22:02:30 +08:00
 mochanight
比如:
将数字 0 转换为 30
数字 2 转换为 3F
数字 3 转换为 3D
数字 4 转换为 35

a= '0234'
怎么才能 a = '303F3D35'
4186 次点击
所在节点    Python
29 条回复
blless
2018-01-13 22:03:43 +08:00
translate
mochanight
2018-01-13 22:04:10 +08:00
小白一个 想到的就是 a[-1] 一个个的 if 替换 不知道有什么简单的方法吗
blless
2018-01-13 22:05:10 +08:00
额…好像不行 translate 是单个字符映射
blless
2018-01-13 22:05:53 +08:00
直接用字典吧…
mochanight
2018-01-13 22:06:55 +08:00
@blless 求例子
blless
2018-01-13 22:12:01 +08:00
我用手机 只能大概写一下,
strmap ={"0":"30",…}
src ="0234"
str.join([strmap[x] for x in str])
好久没写 有点忘了 手机敲代码可真难受
HypoChen
2018-01-13 22:12:38 +08:00
num_map = {
"0": "30",
"2": "3F",
"3": "3D",
"4": "35",
}
a = '0234'
result = "".join([num_map[n] for n in a])

虽然蠢,但有效 /w\
MonoLogueChi
2018-01-13 22:17:22 +08:00
你是要求能加密,还是加密之后还可以再解密。如果不需要解密就很简单了,利用已有的加密算法很容易实现的,比如我最近设计的一个登录系统用了 md5 加密。如果需要可以解密的话,可以自己建立一套运算规则,比如利用 ascii 码做一个简单的运算。但是自己建立的规则安全性不知道怎么样。
boywang004
2018-01-13 22:20:40 +08:00
如果能映射到 uint64 空间,建议先做跳码再转换。
awfe
2018-01-13 22:34:17 +08:00
既然是都是数字,放数组里吧,数字直接当索引
woscaizi
2018-01-13 22:34:32 +08:00
建立数字和加密字符串的对应 map。
字符串转字符数组。
循环,利用查表法,拼接新的加密串。
不过应该针对所有的字符串都循环相同的次数。
比如人为指定循环次数为 100 次。
这样每次加密用的时间都相同。
draguo
2018-01-13 22:43:05 +08:00
liuminghao233
2018-01-13 22:55:15 +08:00
一个 for 不就搞定了吗
s7ven
2018-01-13 23:19:43 +08:00
哈夫曼,还能压缩
WordTian
2018-01-13 23:22:51 +08:00
最简单的方法就是做个映射集合,然后对要加密的字符循环替换。。。
akira
2018-01-14 02:15:08 +08:00
@MonoLogueChi 自己设定的规则,除非是你数学很牛逼,不然一般都不如现成的
geelaw
2018-01-14 02:52:51 +08:00
这是哪门子加密呃,几乎上面每一层我都没看出来这玩意儿和加密的关系
rogwan
2018-01-14 08:07:51 +08:00
hashids.org 最省事
580a388da131
2018-01-14 09:00:38 +08:00
没看明白究竟问题在哪
难道是想问 字符串怎么打散然后循环替换?
uolcano
2018-01-14 09:01:05 +08:00
自己弄着玩就算了,真要加密是要经得起密码分析(cryptanalysis)的。一般都是用现有的算法,比如 DES/AES/ECC/RSA,你自己搞出来一套是很难的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/422689

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX