当前位置: 首页 > 知识库问答 >
问题:

加密

罗兴运
2023-03-14

这是一个桌面应用程序,所以我只需要基本的登录安全性,我想使用一个函数来加密密码,另一个函数我从UI传递密码并将其散列保存到db中,然后返回true o false,这取决于匹配与否。

我尝试使用jasypt官方网站的池版本,我可以加密,但我不知道如何解密。

//Function to encrypt password
public static String cifrarClave(String clave) {
    PooledStringDigester digester = new PooledStringDigester();
    digester.setPoolSize(4);
    digester.setAlgorithm("SHA-1");
    digester.setIterations(50000);
    digester.setSaltSizeBytes(32);

    //String return is hash that I save into db
    return digester.digest(clave);
}

//Function to decrypt password
//clave is old plain that user enter from UI and I want to compare from hash save it into db
public static boolean validarClave(String clave, String hash) {
    PooledStringDigester digester = new PooledStringDigester();
    digester.setPoolSize(4); 
    digester.setAlgorithm("SHA-1");
    digester.setIterations(50000);

    String digest = digester.digest(clave);

    //Always fails at that point, I get different hash from compare clave
    return digester.matches(digest, hash);
}

我是安全方面的新手,所以我对安全不太了解,我接受其他建议或替代方案,我只想要一个工作示例。

共有1个答案

罗诚
2023-03-14

当您使用两个哈希摘要而不是纯文本消息和之前计算的摘要调用jasypt的匹配(消息,摘要)函数时,您使用的不正确。

validarClave()中,您首先不必要地从用户的明文密码(clave)计算摘要,然后将其传递给匹配器:

String digest = digester.digest(clave);
//Always fails at that point, I get different hash from compare clave
return digester.matches(digest, hash);

如果您只需将明文密码传递给匹配器,您的方法将正常工作,如下所示:

digester.matches(clave, hash);

更多信息可以在jasypt的javadocs和代码示例中找到。

 类似资料:
  • 主要内容:1.对称加密,2.非对称加密,3.混合加密,4.常见的摘要算法1.对称加密 AES,密钥长度有128/256/192。高级加密标准,是下一代的加密算法标准,速度快,安全级别高; DES:密钥为56, 数据加密标准,速度较快,适用于加密大量数据的场合。 3DES: 密钥为168.是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 IDES: 密钥为128 SM1: 密钥为128 SM4: 密钥为128 RC4, RC5, RC6 DESX 两边用

  • 使用 :X 命令为文件设定一个密码 :X Enter encryption key: ****** Enter same key again: ****** 如果要取消加密,可以设置密码为空 可以禁用交换文件,以免泄密 vim -x -n file.txt 如果你已在经编辑这个文件了,那么交换文件 swapfile 可以用下面的命令禁止: :setlocal noswapfile 由于没了交换文件

  • 本文向大家介绍JS实现的base64加密、md5加密及sha1加密详解,包括了JS实现的base64加密、md5加密及sha1加密详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现的base64加密、md5加密及sha1加密。分享给大家供大家参考,具体如下: 1、base64加密 在页面中引入base64.js文件,调用方法为: 2、md5加密 在页面中引用md5.js文件,调用

  • 问题内容: 我正在开发一个android应用程序,因此我需要对它的一方面使用加密。对于使用哪种算法(AES,DES,RSA等),我真的很冷漠。我知道Java有一个加密程序包,但我一点都不熟悉。有人可以发布有关如何执行加密/解密功能的示例吗? 问题答案: 该库中有一个缺陷,它允许侦听器在适当的情况下解密发送的数据包。请参见对Oracle Exploit Tool和Apache MyFaces进行填充

  • 稳定性: 2 - 稳定的 crypto 模块提供了加密功能,包含对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。 使用 require('crypto') 来访问该模块。 const crypto = require('crypto'); const secret = 'abcdefg'; const hash = crypto.createHmac('sha2

  • 我在C#程序(我在下面提到)中使用了RSA非对称密钥加密算法,我必须通过java程序加密数据。我希望我的java程序生成与C#程序相同的加密密钥。 公钥: C#加密程序: Java加密方案: 我尝试了上述java程序,但结果如下: O+gw 7+X hY x A 9 ltD V 5 zE RsF 4 Dy Xg MTc/gx 82 wR tT 1 x fR 3 su Y 0 XB JLa dp 7