如何在Android中将字符串加密为有限长度的字符串

时间:2014-01-15 16:42:18

标签: java android encryption

我需要在我的Android应用程序中加密20-32个字符的字符串,但生成的字符串必须尽可能小,最好是 10-20 字符(无论如何最多32个字符)。这是我的应用程序的必要条件(与加密类型无关)。

我对加密技术一无所知,这是我第一次使用Android加密API。

我使用this示例作为开头,它可以工作,但生成的字符串太大了。

你能告诉我,为了达到这个目的,我必须改变那些代码吗?或者你能给我一些关于这方面的教程吗?

注意:我将使用完整代码或指向教程的链接标记为正确答案。 谢谢!

更新

1)我想要使用的算法是AES CBC或CFB-8。使用此加密,生成的字符串的长度为64.我无法将长度减少到32.您能建议一种方法吗?

2)事情是这个字符串在java web应用程序上加密,写在rfid标签上并在Android应用程序上解密。如何管理加密密钥?

3)我没有找到任何FPE(格式保留加密)算法的实现/教程。你能给我一个吗?

更新2:

我已经决定需要一个更简单的算法,因为它足以让普通用户无法读取rfid标签上的信息。但仍然需要最多32个字符。建议?

P.S。无论我在上面的例子中尝试过什么算法,即使输入字符串只有一个字母,密文的大小也是64.(AES /或DES / CTR,CBC,ECB,CFB)

1 个答案:

答案 0 :(得分:1)

如果加密可以采用任何形式的数据(明文),则结果(密文)必须至少具有相同的大小。原因很简单:如果你的结果会更小,那么某些值会有多个可能的明文。因此,加密数据永远不会变小。

我们无法根据您提供的信息制定好的计划。你无法测试我们建议的是否安全。即使我们对您的信息有更多了解,如果加密非常棘手,那么这种情况也是如此。所以我担心你必须学习,例如格式保留自己的加密。或聘请专家。