首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
V2EX  ›  Python

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

  •  
  •   mochanight · 100 天前 · 1858 次点击
    这是一个创建于 100 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如:
    将数字 0 转换为 30
    数字 2 转换为 3F
    数字 3 转换为 3D
    数字 4 转换为 35

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

    虽然蠢,但有效 /w\
        8
    MonoLogueChi   100 天前 via Android
    你是要求能加密,还是加密之后还可以再解密。如果不需要解密就很简单了,利用已有的加密算法很容易实现的,比如我最近设计的一个登录系统用了 md5 加密。如果需要可以解密的话,可以自己建立一套运算规则,比如利用 ascii 码做一个简单的运算。但是自己建立的规则安全性不知道怎么样。
        9
    boywang004   100 天前
    如果能映射到 uint64 空间,建议先做跳码再转换。
        10
    awfe   100 天前
    既然是都是数字,放数组里吧,数字直接当索引
        11
    woscaizi   100 天前 via iPhone
    建立数字和加密字符串的对应 map。
    字符串转字符数组。
    循环,利用查表法,拼接新的加密串。
    不过应该针对所有的字符串都循环相同的次数。
    比如人为指定循环次数为 100 次。
    这样每次加密用的时间都相同。
        12
    draguo   100 天前
        13
    liuminghao233   100 天前 via iPhone
    一个 for 不就搞定了吗
        14
    s7ven   100 天前 via Android
    哈夫曼,还能压缩
        15
    WordTian   100 天前 via iPhone
    最简单的方法就是做个映射集合,然后对要加密的字符循环替换。。。
        16
    akira   100 天前
    @MonoLogueChi 自己设定的规则,除非是你数学很牛逼,不然一般都不如现成的
        17
    geelaw   100 天前 via iPhone
    这是哪门子加密呃,几乎上面每一层我都没看出来这玩意儿和加密的关系
        18
    rogwan   99 天前 via Android   ♥ 1
    hashids.org 最省事
        19
    580a388da131   99 天前
    没看明白究竟问题在哪
    难道是想问 字符串怎么打散然后循环替换?
        20
    uolcano   99 天前
    自己弄着玩就算了,真要加密是要经得起密码分析(cryptanalysis)的。一般都是用现有的算法,比如 DES/AES/ECC/RSA,你自己搞出来一套是很难的。
        21
    jxie0755   99 天前
    str.maketrans(x[, y[, z]])
    str.translate
        22
    cbiqih   99 天前
    temp = {'0': '30', '2': '3F', '3': '3D', '4': '35'}
    a = '0234'
    print(''.join(map(temp.get, a)))
        23
    FeiyuWang2017   99 天前 via Android
    这不就是那个 Python challenge 第二题吗
        25
    sobigfish   99 天前
    @MonoLogueChi #8 噗~“设计” “ md5 加密”
    好高级啊
        26
    MonoLogueChi   99 天前 via Android
    @sobigfish 这个东西并不高级啊,你想说啥就直说
        27
    blless   99 天前
    @cbiqih 你这个 python3 不一定能用吧 python3 map 出来是一个迭代器
        28
    sampeng   98 天前
    这和加密什么关系。。。。。加密肯定用已经成熟的加密方案。否则就是自己找死
        29
    sampeng   98 天前
    ps。。md5 不是加密。。。。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   803 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.0 · 26ms · UTC 22:59 · PVG 06:59 · LAX 15:59 · JFK 18:59
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1