1.有一个很长的字符串(长度大概为1000),现需要转化为一个短的长度为12的字符串
2.在另一个项目中获取到这个短的字符串以后,去解析获取到原字符串
这有点类似于对字符串的加密与解密。
尝试过MD5,但没有办法解密得到原字符串。
尝试过des,但是加密后的字符串不符合要求,长度太长
所以是否有一种其他的算法,可以解决这个问题。并不一定使用加密解密,我只是想把字符串变短,然后在另外一个项目获得这个短的字符串,再还原回去
1.有一个很长的字符串(长度大概为1000),现需要转化为一个短的长度为12的字符串
2.在另一个项目中获取到这个短的字符串以后,去解析获取到原字符串
这有点类似于对字符串的加密与解密。
尝试过MD5,但没有办法解密得到原字符串。
尝试过des,但是加密后的字符串不符合要求,长度太长
所以是否有一种其他的算法,可以解决这个问题。并不一定使用加密解密,我只是想把字符串变短,然后在另外一个项目获得这个短的字符串,再还原回去
http://blog.csdn.net/guobing9...
效果还是不错的
还有一个思路,将数据存储到两方都可以访问的一个数据存储的地方,比如 Redis,key 使用 UUID 之类的唯一标识,这样对方通过 key 再从数据存储中获取
我觉得这个是完全不可能的,MD5也只是一个特征算法,我们觉得他不会有重复不代表真的不会重复,MD5是32位也就是最多有36的32次方种组合,但是如果有一个长度为33的字符串由和MD5相同的字符组成,那他就有36的33次方种组合,必然是大于MD5的组合数的,把长度为33的字符串都MD5一次,就必然得出会有重复的MD5出现,所以说MD5是必然会对应多个不同的字符串的,只是概率太小我们就假设这是不存在的,如果要进行反运算,他就可能得出多个不同的数据,这么说你明白吗,他是不可能进行反运算的,所以MD5一般只是来比较两个值或者文件是否相同或者被篡改,并不能作为加密解密的技术。
可以使用算法里的二叉树,将26个字母转换成平衡二叉树结构,使用1或0表示字母,将整个字符串全部转换成1和0表示并存入byte[]中,用new String(byte[])生成新字符串。
3 回答2.2k 阅读✓ 已解决
3 回答3.7k 阅读✓ 已解决
8 回答2.9k 阅读
4 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
1 回答1.9k 阅读✓ 已解决
谢谢大家的解决方案,最终解决办法为:采用短网址生成方法,生成一个唯一的短字符串。
然后保存到数据库中,与源数据一一对应,新的系统,从数据库中取到相应的数据
相关实现代码:
最后调用getShortUrl生成我要的,保存数据库,然后一一对应取到,因为是使用的短网址生成方法,所以就以这个命名了,感谢提供此算法的网友
根据生成的,确实不知道怎么去逆向得到原来的,所以就使用了持久化去解决.这是我暂时的解决办法