按照格式保留加密(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”的长度