有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何实现FPE的循环遍历方法,使输出加密字符串的长度和输入字符串的长度相同?

按照格式保持加密(FPE)中的循环遍历方法概念,如下所示 假设M是我们想要的字符串输出长度,X是纯文本

AES(X)=Y
if (Y>M) {
    AES(X)
}

我们做这个循环,直到我们得到所需的输出长度。但当我尝试在AES加密代码上写一个循环时,加密字符串的输出长度每次都在增加。我错过了什么

main()
{
    String strToEncrypt = "012345678";
    final String strPssword = "QWERTYUIOPASDFGH";
    AES.setKey(strPssword);

    for(int i=0;i<20;i++)
        {
          AES.encrypt(strToEncrypt.trim());
          System.out.println("String to Encrypt: " + strToEncrypt); 
          System.out.println("Encrypted: " + AES.getEncryptedString());
          strToEncrypt = AES.getEncryptedString();
        }
}

我得到的结果是

String to Encrypt: 012345678
Encrypted: /a+WAzyVsLRkWXtQu1RFrw==

String to Encrypt: /a+WAzyVsLRkWXtQu1RFrw==
Encrypted: K2DVyvglFSGncoTvl7al00cPzKdRyGkW/YTOTqXp3sk=

String to Encrypt: K2DVyvglFSGncoTvl7al00cPzKdRyGkW/YTOTqXp3sk=
Encrypted: I7CBulv5XdEaSX55wFlXFHgtmwFZO6GZvmZ+OrH8jSRSga7NhdG6bYXEwR90YzSI

但我尝试的是,经过多次迭代后,输出加密字符串长度应该等于输入字符串“012345678”的长度


共 (0) 个答案