为什么两个相同的文本生成不同的加密文本

blu*_*sky 1 java security encryption cryptography jasypt

这个班 :

import org.jasypt.util.text.BasicTextEncryptor;

    public class TestSame {

        public static void main(String args[]){

            BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
            textEncryptor.setPassword("test");

            System.out.println(textEncryptor.encrypt("test"));
            System.out.println(textEncryptor.encrypt("test"));

            System.out.println(textEncryptor.decrypt("Nv4nMcuVwsvWVuYD7Av44Q=="));
            System.out.println(textEncryptor.decrypt("bjU82X18p9gAivwomA+NpQ=="));

        }

    }
Run Code Online (Sandbox Code Playgroud)

生成此输出:

n3G0M4YH8QjPU+YMYsfTmw==
ftokGN7dMKyLtKBaim2RTQ==
test
test
Run Code Online (Sandbox Code Playgroud)

为什么加密文本不同?解密的文本是相同的,所以如何能够解密密码,因为每个加密的文本是不同的?

我希望使用相同密码和相同加密的相同文本会生成相同的加密文本,但似乎并非如此?

chr*_*ke- 6

从文档:

如果使用随机盐生成器,则同一消息的两个加密结果将始终不同(除了随机盐重合的情况).这可以通过一次对数据集进行蛮力攻击来强制执行安全性,并迫使攻击者对每个单独的加密数据执行暴力攻击.