gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:09:56 25 4
gpt4 key购买 nike

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

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

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

您能告诉我我必须更改该代码才能实现此目的吗?或者你能给我一些关于这方面的教程吗?

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

更新:

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

2) 问题是这个字符串在 java 网络应用程序上加密,写在 rfid 标签上并在 Android 应用程序上解密。如何管理加密 key ?

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

更新 2:

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

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

最佳答案

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

根据您提供的信息,我们无法做出好的方案。而且您无法测试我们提出的建议是否安全。即使我们对您的信息了解得更多,那么这种加密也是非常棘手的。所以恐怕你将不得不学习例如自己格式化保存加密。或者聘请专家。

关于java - 如何在Android中将字符串加密为有限长度的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21143209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com