• 35.2 Encryptors加密器


    Encryptor类提供了构造对称加密器的工厂方法。使用此类,您可以创建字节密码器来加密原始字节[]形式的数据。您还可以构造文本加密程序来加密文本字符串。加密器是线程安全的。

    35.2.1 BytesEncryptor

    使用Encryptors.stronger 的工厂方法来构造字节密码器:

    1 Encryptors.stronger("password", "salt");

    “stronger”的加密方法使用伽罗瓦计数器模式的256位AES加密创建加密器。它使用PKCS #5的PBKDF2(基于密码的密钥导出函数#2)导出密钥。这个方法需要Java 6。用于生成密码的密码应保存在安全的地方,不得共享。salt用于在您的加密数据被泄露的情况下防止针对密钥的字典攻击。还应用了16字节的随机初始化向量,因此每个加密消息都是唯一的。

    提供的salt应该是十六进制编码的字符串形式,是随机的,长度至少为8字节。这种盐可以使用密钥生成器生成:

    1 String salt = KeyGenerators.string().generateKey(); // generates a random 8-byte salt that is then hex-encoded

    用户也可以使用标准的加密方法,即密码块链接模式下的256位AES。这种模式不经过身份验证,也不能保证数据的真实性。对于一个更安全的选择,用户应该更喜欢加密器。

    35.2.2 TextEncryptor

    使用Encryptors.text工厂方法构建标准的文本加密器:

    1 Encryptors.text("password", "salt");

    文本加密程序使用标准的字节加密程序来加密文本数据。加密结果作为十六进制编码字符串返回,以便于存储在文件系统或数据库中。

    使用Encryptors.queryableText工厂方法构造一个“可查询的”TextEncryptor:

    1 Encryptors.queryableText("password", "salt");

    可查询文本加密器和标准文本加密器的区别在于初始化向量(iv)处理。可查询的TextEncryptor #加密操作中使用的iv是共享的,或者是常量,并且不是随机生成的。这意味着多次加密的相同文本总是会产生相同的加密结果。这不太安全,但对于需要查询的加密数据是必要的。可查询的加密文本的一个例子是OAuth apiKey。

  • 相关阅读:
    求数列的和
    统计字符
    保留最大的数
    POJ百练—IP地址转换
    HDOJ1213(并查集)
    HDOJ1059(多重背包)
    HDOJ1171(多重背包)
    多重背包(标准模板)
    HDOJ1251(前缀匹配---分块查找&map应用)
    hdoj1113(字符串map应用)
  • 原文地址:https://www.cnblogs.com/jrkl/p/13508659.html
Copyright © 2020-2023  润新知