2011-01-27 8 views
11

getInstanceinit에 대한 메서드 인수가 변경되지 않으므로 여러 메서드에서 동일한 Cipher 개체를 사용할 수 있습니까?Cipher 객체를 재사용 할 수 있습니까?

예를 들어 응용 프로그램의 여러 부분에서 유틸리티 클래스의 decrypt 메서드를 사용한다고 가정합니다. 전달 된 모든 암호화 된 값은 동일한 키와 알고리즘을 사용하여 생성됩니다. 그렇다면 동일한 Cipher 개체를 재사용 할 수 있습니까?

Cipher의 여러 생성에 대해 걱정할 가치가 있습니까 (KeySpec, SecretKey 개체가 생성 될 수 있음)?

답변

-5

암호 개체를 다시 사용할 수 있지만 모든 작업에 대해 init()을 호출하여 매번 초기화해야합니다.

KeySpec을 다시 만들지 않으려면 저장하고 여러 init()에서 같은 값을 사용해야합니다.

+0

답장을 보내 주셔서 감사합니다. 확인하기 위해 각 doFinal()에 대해 하나의 init() 호출이 필요하다는 것을 의미합니까? – Firefox

+9

doFinal()의 Javadocs에서는, 종료시에,이 암호 객체를, init를 호출 해 이전에 초기화했을 때의 상태에 리 셋트합니다. 즉, 객체는 리셋되어 암호화 또는 복호화가 가능합니다 init에 대한 호출에서 지정된 작업 모드에 따라) 더 많은 데이터를 가져올 수 있습니다. " –

+5

GregS가 정확합니다. 이 대답은 잘못되었습니다. 불행히도 stackoverflow 마법사는 이제 내 "up in"상태의 잘못된 upvote를 실행 취소 할 수 없습니다. 나쁜 디자인 선택 마법사. – Nemi

관련 문제