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

2019-04-24 11:32:50 +08:00
 mmmbka

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

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

加密 json:7275656960A45B1FC7E6B8B366F56CAC2C18C7DEED5207D935C3988FD1A79DEBC76A6143BC0C9A31112C9E85785E2634F123B0C84CBD51099EDC34312876DE27C254E4CC65AE7F2DEEE1CAAED04CD374

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

3014 次点击
所在节点    程序员
7 条回复
tangtj
2019-04-24 11:47:14 +08:00
随机一个 long,存数据库。
cxtrinityy
2019-04-24 12:28:53 +08:00
要把非定长字符串(你的密文)转成定长数字怕是转不回去吧,参考 MD5,把密文转成二进制按 64 个 bit 一组连续性进行与操作最后可以得到一个 long
想逆向,参照楼上说法做个映射怎么样
LimeVista
2019-04-24 12:53:59 +08:00
以小换大?可逆,无视信息熵?不太科学吧,要不然就跟楼上说的数据库表映射,那样的话加密就没意义了。表设计的合理点就行吧。
feiyuanqiu
2019-04-24 13:00:47 +08:00
你这个方案有点像 jwt 啊
night98
2019-04-24 13:04:21 +08:00
逆向不了,数据库映射就行了。怕性能差就放缓存里
samcode
2019-04-24 14:21:24 +08:00
如果 Json 只有 userid 和 groupid 就好办
userId<<64|groupId 然后再加密这个 128 位数
fishioon
2019-04-24 20:32:23 +08:00
放缓存,邀请码再加个时效性

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

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

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

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

© 2021 V2EX