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 · 4393 次点击
    这是一个创建于 2507 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如:
    将数字 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 是单个字符映射
    blless
        4
    blless  
       2018-01-13 22:05:53 +08:00 via iPhone   ❤️ 1
    直接用字典吧…
    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 码做一个简单的运算。但是自己建立的规则安全性不知道怎么样。
    boywang004
        9
    boywang004  
       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
    sobigfish
        25
    sobigfish  
       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   ·   实用小工具   ·   6009 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 06:10 · PVG 14:10 · LAX 22:10 · JFK 01:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.