问题标签 [jasypt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hibernate - 尝试读取加密文本时出现 JPA/Hibernate 的 OptimisticLockException
我们需要在使用 JPA 存储字符串时对其进行加密,并在读取时对其进行解密。首先,我们不能使用一些休眠配置或任何其他配置文件,因为我们的属性是通用的。这意味着我们的属性看起来像这样(简单地说,我们已经在这里实现了一些处理):
(我们可以使用 isEncrypted() 方法区分哪些属性必须加密。根据属性设置为 true 或 false)。Out Encryptor 类(简化)与 Jasypt 一起使用:
加密/解密有效。实际上,我们的整个持久性处理都有效。我们可以保存加密数据。但是,当我们读取加密数据时,我们得到以下信息:
奇怪的是,只有当且仅当 Hibernates 尝试更新加密文本时,才会发生这种情况。但它不会发生,当我们伪加密和伪解密我们的文本时。这意味着我们反转文本,用 Hibernate 存储反转的文本,并在 Hibernate 尝试更新它时“解密”它。所以我们的整个处理工作正常,但是当我们使用“真正的”加密时它不起作用的原因是什么?有任何想法吗?
(同样,en- 和 decryption 本身有效。我让它在不同的 JUnit 类中运行以确保这一点。)
grails - 如何在集成测试期间禁用 Grails Jasypt 插件加密?
有没有办法禁用加密,或者可能在 Grails 项目的集成测试期间使用简单的算法?字段级加密有相当多的开销,不一定需要在那时进行测试,只会增加运行测试所需的时间。
在测试阶段排除插件可能不起作用,因为需要映射并且可能会破坏编译。
我在想纯文本或更简单的算法可能会起作用,或者甚至有可能让配置忽略加密处理?
目标只是在测试期间减少插件对性能的影响。
security - 盐位,盐藏
我对以下情况有疑问:
我想使用 jasypt 加密我的密码并使用某种盐进行加密。
如果:我使用基于密码的加密使用从环境变量中获得的密码来加密盐,这样我就可以在属性文件中获得盐的加密值,这是否有意义(或是否存在任何安全隐患) ,从那里获取它,通过我从环境变量中获取的密码解密它(实际上我将拥有一个 EnvironmentStringPBEConfig 对象,该对象反过来从 EnvironmentStringPBEConfig 对象中获取环境变量,并在创建 EnvironmentStringPBEConfig 后删除环境变量)最后使用盐。
谢谢你。
编辑:请注意,我想知道如上所述“隐藏”盐是否是一种好习惯,我现在没有实施这样的解决方案。
编辑:另请注意OWASP的以下建议。
建议:很难偷走整个盐
对于基本的加盐机制,还有一些额外的推荐增强功能可供考虑:
有一个额外的“系统”盐,它是整个系统的固定值。这应该存储在某个配置文件中。这个固定值不必包含在每个备份中,这使得攻击者更难破坏正确计算哈希值所需的所有元素。在源代码中嵌入部分系统盐。这对开源代码没有多大帮助,但对于自定义应用程序,在代码中包含部分系统盐将是攻击者正确计算哈希值所需的又一项。每次更改用户密码时都会为帐户生成一个新的盐。
建议:盐分离
另一种密码存储防御机制涉及将盐存储在与密码哈希不同的位置。使用服务器的文件系统是一种常用的盐隔离机制,假设密码哈希存储在不同的位置,例如数据库或 LDAP 服务器。这种防御机制降低了数据库文件被盗时密码被盗的风险,因为盐不会包含在数据库数据中。注意确保密码哈希和盐没有一起备份,它们也应该单独备份。
java - 使用 Jasypt 时获取密码盐
我想使用 Jasypt 使用随机 Salt 加密用户密码。是否有可能从 Jasypt 获得随机板条?我怎么能得到它?
谢谢, 费拉斯
java - Java中字符串加密的常量结果
我想加密一个字符串(用户的电子邮件)并始终获得相同的结果字符串我将用户的电子邮件保存为登录用户名,因为我在该字段上进行了搜索(例如,注册时用户的电子邮件已经存在。或者选择用户的密码,其中电子邮件 = 'abc')
对于密码加密和解密,我使用 Jasypt 来完成这项工作。
字符串加密,我可以加密和解密,但我还没有找到解密常量的方法。
我已经搜索了很多解决方案,但似乎没有一个解决我的问题。可能我没有使用正确的关键字,我不熟悉加密。
我不必使用 Jasypt 进行字符串加密。每次将“hello@hello.com”转换为“@ABC#EFG”的任何东西都会很棒。
我还尝试根据字符串的长度、第一个字母等使用不同的加扰算法对字符串的字节进行加扰。不幸的是,当我将加密的字符串保存在 MySQL 中时它停止工作。据我了解,最终具有 MySQL 不喜欢的 Unicode 值的每个字节都没有正确保存(当我使用测试类中存在的字符串时它工作正常,但当我实际保存加密字符串并从D B )
任何想法 - 解决方案的链接?
非常感谢提前,丹
mysql - jasypt 与 Hibernate
我想在 servlet 中使用 Jasypt 和 Hibernate。我在这里提到了Jasypt。它说明了如何配置 Hibernate。但是,仍然不清楚我如何处理session
保存和检索结果。我做了上面链接中提到的 Hibernate 的配置(我不会再在这里跳过它们)。让我知道如何使用 Session 保存和检索数据。
举个简单的例子,可以说,我有一个名为“登录”的表,包含 2 列“名称”、“密码”。列“名称”数据类型是 varchar,“密码”是 varbinary。该类pojo
具有变量字符串名称和字节 [] 密码。如何从表“登录”中保存和检索数据。至少任何用示例代码解释的有用链接都会受到赞赏。
编辑
当我配置休眠 .hbm 文件并尝试照常保存时,也会引发异常。
java - 获取错误 org.jasypt.exceptions.EncryptionInitializationException:未为基于密码的加密器设置密码
我正在使用 jasypt-1.9.0 进行加密。
Jdbc.properties
我从你的一个网站得到了参考。我正在使用多个上下文文件。我已经配置
当我登录我的应用程序时,我收到错误::
org.jasypt.exceptions.EncryptionInitializationException:未为基于密码的加密器设置密码
postgresql - Java Swing 应用程序和 Postgres 数据库之间的密码加密
我正在构建一个具有 Java Swing 前端访问 postgres 数据库的系统。在本周发现Jasypt之前,我原本打算使用 Postgres 自己的加密机制。它工作得很好,但我现在也希望对网络上的密码进行加密,因此我求助于 Jasypt。
问题是,我需要一个固定密码才能输入到我的 Postgres 存储函数中。即如果输入密码是“aaa”,那么任何其他输入到 Postgres 存储函数中的密码(“aaa”除外)都将不匹配。
有没有办法让这两种加密机制协同工作,还是我必须转储 Postgres?
我的用户表:
加密密码:
解密密码:
如果我不能让他们两个一起工作,那么我将不得不转储 Postgres 的机制,因为我需要通过网络进行加密。
此外,关于数据库连接字符串和数据库用户名和密码(不使用任何框架......希望使用 SSL 的普通旧 jdbc 连接 - 尚未实现),我认为我无法使用 Jasypt,因为我需要在数据库级别对其进行解密。对于这种情况,仅 SSL 就足够了吗?
谢谢。
java - MacRoman 与 UTF-8
我尝试从源中提取字节数据,对其进行加密,然后将其存储在文件系统中。
对于加密,我使用jasypt和BasicTextEncryptor类。为了存储到文件系统,我使用了Apache 的 Commons IOUtils类。
需要时,这些文件将被解密,然后发送到用户的浏览器。该系统在默认字符集为MacRoman的本地计算机上运行,但在默认字符集为UTF-8的服务器上失败。
当我在流程的每个阶段明确设置编码以使用MacRoman时,它也可以在服务器上运行,但我对此表示怀疑,因为我的其余代码使用UTF8。
有没有一种方法可以在不转换为 MacRoman 的情况下使用代码?