求助,一串字符串为数字,需要将每个数字进行加密,怎么简单点? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
mochanight
V2EX    Python

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

  •  
  •   mochanight 2018-01-13 22:02:30 +08:00 4758 次点击
    这是一个创建于 2835 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如:
    将数字 0 转换为 30
    数字 2 转换为 3F
    数字 3 转换为 3D
    数字 4 转换为 35

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

    虽然蠢,但有效 /w\
    MonoLogueChi
        8
    MonoLogueChi  
       2018-01-13 22:17:22 +08:00 via Android
    你是要求能加密,还是加密之后还可以再解密。如果不需要解密就很简单了,利用已有的加密算法很容易实现的,比如我最近设计的一个登录系统用了 md5 加密。如果需要可以解密的话,可以自己建立一套运算规则,比如利用 ascii 码做一个简单的运算。但是自己建立的规则安全性不知道怎么样。
    vela
        9
    vela  
       2018-01-13 22:20:40 +08:00
    如果能映射到 uint64 空间,建议先做跳码再转换。
    awfe
        10
    awfe  
       2018-01-13 22:34:17 +08:00
    既然是都是数字,放数组里吧,数字直接当索引
    woscaizi
        11
    woscaizi  
       2018-01-13 22:34:32 +08:00 via iPhone
    建立数字和加密字符串的对应 map。
    字符串转字符数组。
    循环,利用查表法,拼接新的加密串。
    不过应该针对所有的字符串都循环相同的次数。
    比如人为指定循环次数为 100 次。
    这样每次加密用的时间都相同。
    draguo
        12
    draguo  
       2018-01-13 22:43:05 +08:00
    liuminghao233
        13
    liuminghao233  
       2018-01-13 22:55:15 +08:00 via iPhone
    一个 for 不就搞定了吗
    s7ven
        14
    s7ven  
       2018-01-13 23:19:43 +08:00 via Android
    哈夫曼,还能压缩
    WordTian
        15
    WordTian  
       2018-01-13 23:22:51 +08:00 via iPhone
    最简单的方法就是做个映射集合,然后对要加密的字符循环替换。。。
    akira
        16
    akira  
       2018-01-14 02:15:08 +08:00
    @MonoLogueChi 自己设定的规则,除非是你数学很牛逼,不然一般都不如现成的
    geelaw
        17
    geelaw  
       2018-01-14 02:52:51 +08:00 via iPhone
    这是哪门子加密呃,几乎上面每一层我都没看出来这玩意儿和加密的关系
    rogwan
        18
    rogwan  
       2018-01-14 08:07:51 +08:00 via Android   1
    hashids.org 最省事
    580a388da131
        19
    580a388da131  
       2018-01-14 09:00:38 +08:00
    没看明白究竟问题在哪
    难道是想问 字符串怎么打散然后循环替换?
    uolcano
        20
    uolcano  
       2018-01-14 09:01:05 +08:00
    自己弄着玩就算了,真要加密是要经得起密码分析(cryptanalysis)的。一般都是用现有的算法,比如 DES/AES/ECC/RSA,你自己搞出来一套是很难的。
    jxie0755
        21
    jxie0755  
       2018-01-14 10:20:00 +08:00
    str.maketrans(x[, y[, z]])
    str.translate
    cbiqih
        22
    cbiqih  
       2018-01-14 13:07:41 +08:00
    temp = {'0': '30', '2': '3F', '3': '3D', '4': '35'}
    a = '0234'
    print(''.join(map(temp.get, a)))
    FeiyuWang2017
        23
    FeiyuWang2017  
       2018-01-14 15:32:57 +08:00 via Android
    这不就是那个 Python challenge 第二题吗
    FeiyuWang2017
        24
    FeiyuWang2017  
       2018-01-14 15:44:19 +08:00 via Android
    run2
        25
    run2  
       2018-01-14 17:51:29 +08:00
    @MonoLogueChi #8 噗~“设计” “ md5 加密”
    好高级啊
    MonoLogueChi
        26
    MonoLogueChi  
       2018-01-14 19:04:51 +08:00 via Android
    @sobigfish 这个东西并不高级啊,你想说啥就直说
    blless
        27
    blless  
       2018-01-14 22:02:22 +08:00
    @cbiqih 你这个 python3 不一定能用吧 python3 map 出来是一个迭代器
    sampeng
        28
    sampeng  
       2018-01-15 11:52:35 +08:00
    这和加密什么关系。。。。。加密肯定用已经成熟的加密方案。否则就是自己找死
    sampeng
        29
    sampeng  
       2018-01-15 11:52:52 +08:00
    ps。。md5 不是加密。。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     877 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 22:35 PVG 06:35 LAX 15:35 JFK 18:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86