필자는 Field LoginId 및 Password를 사용하여 자격 클래스를 작성했습니다.java.lang.ClassCastException : [B를 java.lang.String에 캐스트 할 수 없습니다.
Iam이 passwrd를 암호화하고 AES_ENCRYPT를 사용하여 db에서 저장합니다.
해독 된 암호 만 검색하려고합니다. 그래서, OPEN JPA 2.0에서 NAtiveQueryis를 사용하여 AES_DECRYPT를 사용합니다. 내가 쓴
쿼리는 다음과 같습니다
Query q = em.createNativeQuery("select AES_DECRYPT(l.password,?2) from loginDetails l where l.loginID = ?1");
q.setParameter(1, loginId);
q.setParameter(2, getKey());
String s = q.getSingleResult();
그러나 메신저는 다음과 같은 예외 받고 다음을 gettng 메신저도 심지어 여기
Query q = em.createNativeQuery("select AES_DECRYPT(l.password,?2) from loginDetails l where l.loginID = ?1");
q.setParameter(1, loginId);
q.setParameter(2, getKey());
List<Object> s = q.getResultList();
String s1 = null;
for(Object o : s){
s1= (String) o;
}
: 나는 심지어이 시도
java.lang.ClassCastException: [B cannot be cast to java.lang.String
at com.rcs.chef.validation.UserValidation.decryptedPasswordForID(UserValidation.java:99)
at com.rcs.chef.validation.UserValidation.validateUser(UserValidation.java:81)
at com.rcs.chef.validation.UserValidation.activate(UserValidation.java:72)
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 org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:226)
at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:824)
at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:636)
at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:724)
at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)
at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:219)
at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:147)
at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:640)
at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:331)
at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:227)
을 동일한 예외 :
java.lang.ClassCastException: [B cannot be cast to java.lang.Object
req를 처리하는 쿼리와 함께 실수가 무엇인지 알 수 있습니까?
왜 데이터베이스에 자바를 사용하면 그렇게 할 수 있습니까? – fge
암호를 암호화하지 마십시오. 암호는 안전하게 _hashed_합니다; 암호를 검색 할 수 없어야합니다. – SLaks
데이터베이스가이 상자를 제공 할 때 Java 라이브러리를 사용하는 이유는 암호가 데이터베이스를 벗어날 필요가 없기 때문입니다. – JimmyB