- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将 Hibernate3 与 MySql DB 一起使用,并尝试添加 Jasypt 库来处理用户密码的加密。
我在 hibernate.cfg.xml 中配置了 Jasypt,如下所示:
<property name="connection.provider_class">org.jasypt.hibernate3.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider</property>
<property name="connection.encryptor_registered_name">strongHibernateStringEncryptor</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/medpal?zeroDateTimeBehavior=convertToNull</property>
<property name="hibernate.connection.username">xxxx</property>
<property name="hibernate.connection.password">xxxx</property>
在系统加载时,我注册加密器:
StandardPBEStringEncryptor strongEncryptor = new StandardPBEStringEncryptor();
strongEncryptor.setPassword("xxxx");
strongEncryptor.setAlgorithm("PBEWithMD5AndTripleDES");
strongEncryptor.setKeyObtentionIterations(2000);
HibernatePBEEncryptorRegistry registry = HibernatePBEEncryptorRegistry.getInstance();
registry.registerPBEStringEncryptor("strongHibernateStringEncryptor", strongEncryptor);
在我的Hibernate 用户模型中,我定义了:
@TypeDef(
name="encryptedString",
typeClass=EncryptedStringType.class,
parameters= {
@Parameter(name="encryptorRegisteredName", value="strongHibernateStringEncryptor")
}
)
并注释了所需的字段进行加密:
@Column(nullable = false)
@Type(type="encryptedString")
public String getPassword() {
return password;
}
当我尝试将 User 对象保存到表中时,出现以下异常:
org.jasypt.exceptions.EncryptionOperationNotPossibleException: Encryption raised an exception. A possible cause is you are using strong encryption algorithms and you have not installed the Java Cryptography Extension (JCE) Unlimited Strength
at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.handleInvalidKeyException(StandardPBEByteEncryptor.java:999)
at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.encrypt(StandardPBEByteEncryptor.java:868)
at org.jasypt.encryption.pbe.StandardPBEStringEncryptor.encrypt(StandardPBEStringEncryptor.java:642)
at org.jasypt.hibernate3.type.AbstractEncryptedAsStringType.nullSafeSet(AbstractEncryptedAsStringType.java:152)
at org.hibernate.type.CustomType.nullSafeSet(CustomType.java:140)
at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2184)
at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2161)
at org.hibernate.persister.entity.AbstractEntityPersister$4.bindValues(AbstractEntityPersister.java:2339)
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:56)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2345)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2852)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697)
at com.medpal.action.Register1Action.execute(Register1Action.java:61)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:383)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
我已确保安装了 Java Cryptography Extension (JCE)(我运行 Java 6,因此它附带了它,但我也尝试将其从 Oracle 网站下载)
我还确保 DB 中的密码列长度为 20000 个字符,以确保有足够的空间来存储加密密码。
我有什么遗漏的吗?
谢谢!
最佳答案
向加密器添加一个提供程序,如下所示,
strongEncryptor.setProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
关于hibernate - 无法配置 Jasypt + Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13671348/
我尝试在我的 Jasypt 中使用 3DES,但遇到异常。 但是当我使用默认算法时它工作正常 这是代码 - public MyEncryptablePropertyResolver(Environme
尝试使用 encrypt.sh 实用程序,我的密码包含特殊字符: ./encrypt.sh input="$%#!"password="your_jasypt_password"algorithm="
我有简单的java控制台应用程序,我在其中使用Jasypt1.9.2来加密数据库连接字符串。代码在 Eclipse 中运行得很好,但是导出为 Jar 的应用程序会出现此错误 这是我的简单主类:
我正在使用grails Jasypt Encryption plugin加密数据库中的数据。 如果我在Config.groovy文件中设置jasypt配置,例如: jasypt { algor
我只是想知道是否可以强制加密器始终为相同的输入返回相同的加密值。 StandardPBEStringEncryptorencryptor = new StandardPBEStringEncrypto
同事们,我在我的 spring-boot 项目中使用了 Jasypt(在 Windows 上运行的独立 jar)。我需要通过命令行传递主密码才能运行 jar 。它看起来像: java -jar -Dj
情况是我有一个使用 hibernate 的应用程序。我将其配置为与 jasypt 一起使用,以便该应用程序将数据加密到数据库中。然后,我有另一个从数据库读取数据的应用程序,它不使用 hibernate
我们的安全部门希望我们使用 256 位加密来加密 SSN、用户名等,因此我们决定使用 JASYPT,示例代码如下: encryptor = new StandardPBEStringEncryptor
我想使用 Jasypt 库通过 EncryptablePropertyPlaceholderConfigurer 类在 Spring 中解密属性。我想使用非对称公钥/私钥方法加密/解密这些属性。 您能
我正在用 Java 编写一个需要对字符串进行加密和解密的程序。我正在使用 Jasypt 的 BasicTextEnctyptor。这是一个复杂的应用程序——使用异步网络和类似的东西。加密在服务器和客户
我想知道是否有像 JASYPT 这样的替代库,它可以帮助我加密/解密密码。 最佳答案 是的,有一些。我不确定你到底在找什么,但我一直在使用 BouncyCastle取得了巨大的成功。也许您也会感兴趣。
几天前,我提出了一个有关 Jasypt 问题的问题。我引用了一个抛出 EncryptionOperationNotPossibleException 的较大程序。嗯,我还是没能弄清楚问题所在。这是正在
我将 Hibernate3 与 MySql DB 一起使用,并尝试添加 Jasypt 库来处理用户密码的加密。 我在 hibernate.cfg.xml 中配置了 Jasypt,如下所示: o
我正在尝试桌面应用程序的登录/注册系统。我有一个注册表单和登录表单,凭证信息保存到 PostgreSQL 数据库中。我一开始没有加密信息,一切正常,但现在我想加密密码以保存到数据库中。我正在使用Jas
在 org.jasypt.encryption.pbe.StandardPBEByteEncryptor 中,当我比较其他几个 key 派生功能时, key 派生看起来有所不同。 initialize
在我们基于 Spring + hibernate 的 Web 应用程序中,我配置了 jasypt 来加密存储在数据库中的用户联系电话。它对加密工作正常,因为数据库包含加密字符串,而且值已解密并正确显示
您好,我有一个 Java 应用程序。我想使用 Jasypt 使用基于大小和算法生成的随机盐来加密和解密密码。 这就是我想要实现的。 创建一个随机盐。 用盐加密密码。 为用户保存盐和加密密码。 我想要盐
我使用 Java 6、Jasypt 和 BouncyCaSTLe 生成散列密码。我将它们存储在具有默认 UTF-8 字符编码的 MySQL 5.5 数据库中。我试图弄清楚我使用 SHA-256 哈希算
它适用于桌面应用程序,因此我只需要基本的登录安全性,并且我使用一个函数来加密密码,并使用另一个函数将密码从 UI 传递并散列保存到数据库中,并返回 true 或 false 取决于是否匹配。 我尝试使
加密我使用的密码(修改自 http://www.jasypt.org/encrypting-texts.html ): BasicTextEncryptor textEncryptor = new B
我是一名优秀的程序员,十分优秀!