java - Java 中的加密技术保留输入文本的格式

标签 java encryption encryption-symmetric

我想加密数据库表中特定列中的数据。但是,使用 AES/GCM 使用 key 进行标准加密时,加密后的密文长度比原始文本长得多。

由于每个数据库列都有特定的长度,因此我不希望加密文本比原始文本长。我在网上查找了 Java 中的 FormatPreservingEncryption 示例,但没有找到。看来这个技术用得不多。

我已经尝试过 https://github.com/idealista/format-preserving-encryption-java 中的代码

对于大文本,它无法正确运行。例如,对于长度超过 228 个字符的文本,它会失败。

任何人都可以帮忙提供 Java 中这种技术的源代码实现,或者指出一些替代技术来实现我想要的。我现在使用 Java 中的标准 Cipher 类来进行编码。

非常感谢任何帮助。谢谢

最佳答案

下面的链接中有一个示例,说明如何使用 CipherStream 加密与输入文本长度相同的文本。 http://www.java2s.com/Code/Java/Security/BasicIOexamplewithCTRusingAES.htm

也许它会对某人有所帮助

关于java - Java 中的加密技术保留输入文本的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57255875/

相关文章:

java - Android 致命信号错误 11 SIGSEGV 在不同版本的 JellyBean 上

java - 首先调用构造函数或 onDraw()

security - X.509 DN 的所有部分都是可选的吗?

java - winzipaes 在 Android 上解密 10 MB 的文件很慢

c# - 我应该如何为我的 AES 加密数据库条目导出 key 和初始化向量?

python - 使用 PyCrypto 加密/解密大文件 - 策略

c# - AES 解密的消息与原始消息不匹配

java - Junit5 : ClassNotFoundException: org. junit.platform.launcher.core.LauncherFactory

java - Jetty + Guice + Jersey 在访问资源时给出 404

java - 错误 :0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag when importing RSA public key