繁体   English   中英

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

[英]How to encrypt string to a limited length string in Android

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

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

我以这个示例作为开始,它可以工作,但是生成的字符串太大。

您能告诉我为实现此目的我必须更改该代码吗? 或者您可以提供一些有关此的教程吗?

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

更新:

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

2)问题是此字符串在Java Web应用程序上加密,写在rfid标签上并在Android应用程序上解密。 如何管理加密密钥?

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

更新2:

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

PS无论在上面的示例中尝试哪种算法,即使输入字符串只有一个字母,密文的大小也为64。(AES /或DES / CTR,CBC,ECB,CFB)

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

我们无法利用您所提供的信息制定好的计划。 而且您无法测试我们提出的建议是否安全。 即使我们对您的信息有更多了解,但如果加密非常棘手,则采用这种方法。 因此,恐怕您将不得不自己学习例如格式保存加密。 或聘请专家。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM