2
Java에서 AES 암호화 및 암호 해독 기능을 사용하려고했습니다. 불운하게 나는 다량 운이 없었다. 지금은 AES - 키를 생성하고로드하는 중 키에 잘못된 키 예외가 발생합니다.
keyGen = KeyGenerator.getInstance("AES");
SecureRandom random = SecureRandom.getInstance();
keyGen.init(size, random);
SecretKey key = keyGen.generateKey();
AesKey = key.getEncoded();
내가 다시 SecretKeySpec 프로로 변환 키를 사용하여 입력 바이트를 암호화하는 시도 표시되는 코드하는 하나의 방법으로 키를 생성 할 수 있습니다. 내 암호화 코드는 아래와 같습니다.
SecretKeySpec keySpec = new SecretKeySpec(AesKey, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
return cipher.doFinal(input);
그러나 cipher.init 줄을 호출하면 InvalidKeyException이 발생합니다.
키를 잘못 생성합니까? 키를 잘못로드합니까? 그것은 조합입니까? 나는 어떤 통찰력이라도 고맙게 여기을 것이다.
답변으로 추가 할 수 있습니까? 답이없는 질문은 시간이 지남에 따라 삭제됩니다. – Reno
SecureRandom은 시드되지 않아야하며 기본 생성자를 사용해야합니다. 이렇게하면 시드에 시스템 엔트로피 풀이 사용되며 타임 스탬프를 사용하는 것보다 안전합니다. Android API 문서가 곧 업데이트 될 예정입니다. (이 변경 사항을 반영하도록 코드를 수정했습니다.) –