首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

大佬求救, String 类型字符串 160 位 ,怎么转换为 long 类型 19 位--- Java 算法

  •  
  •   mmmbka · 54 天前 · 1205 次点击
    这是一个创建于 54 天前的主题,其中的信息可能已经有所发展或是发生改变。

    rt,如题 aes 加密 json,现在要把加密后的结果 变成 19 位数,去生成邀请码,然后可以根据邀请码逆向出 string,然后可以去 aes 解密。 生成在邀请码的算法需要 long 类型。

    待加密数据:{"userId":"6414401168721254401","groupId":"6406523439465797633"}

    加密 json:7275656960A45B1FC7E6B8B366F56CAC2C18C7DEED5207D935C3988FD1A79DEBC76A6143BC0C9A31112C9E85785E2634F123B0C84CBD51099EDC34312876DE27C254E4CC65AE7F2DEEE1CAAED04CD374

    解密:{"userId":"6414403168721254401","groupId":"6406533439465797633"}

    7 回复  |  直到 2019-04-24 20:32:23 +08:00
        1
    tangtj   53 天前
    随机一个 long,存数据库。
        2
    cxtrinityy   53 天前 via Android
    要把非定长字符串(你的密文)转成定长数字怕是转不回去吧,参考 MD5,把密文转成二进制按 64 个 bit 一组连续性进行与操作最后可以得到一个 long
    想逆向,参照楼上说法做个映射怎么样
        3
    LimeVista   53 天前 via Android
    以小换大?可逆,无视信息熵?不太科学吧,要不然就跟楼上说的数据库表映射,那样的话加密就没意义了。表设计的合理点就行吧。
        4
    feiyuanqiu   53 天前 via Android
    你这个方案有点像 jwt 啊
        5
    night98   53 天前
    逆向不了,数据库映射就行了。怕性能差就放缓存里
        6
    samcode   53 天前
    如果 Json 只有 userid 和 groupid 就好办
    userId<<64|groupId 然后再加密这个 128 位数
        7
    fishioon   53 天前 via iPhone
    放缓存,邀请码再加个时效性
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4013 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 16ms · UTC 03:39 · PVG 11:39 · LAX 20:39 · JFK 23:39
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1