AES 암호 화 안 드 로 이 드 와 자바 에서 의 활용
하지만 조금 이라도 주의 하지 않 으 면 오류 가 발생 할 수 있다.나 는 여기 서 내 가 처음에 만 났 던 잘못 을 정리 하고 자신의 해결 방법 을 말 했다.
우선 암호 화 알고리즘
public static String encrypt(String content, String password) {
try {
KeyGenerator kgen = KeyGenerator.getInstance(AES);
SecureRandom sr = new SecureRandom();// java pc
// SecureRandom sr = SecureRandom.getInstance(SHA1, CRYPTO);//
// android
sr.setSeed(password.getBytes());
kgen.init(256, sr); // 192 and 256 bits may not be available
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, AES);
Cipher cipher = Cipher.getInstance(AES);// java pc
// Cipher cipher = Cipher.getInstance(CIPHER);// Android
byte[] byteContent = content.getBytes();
cipher.init(Cipher.ENCRYPT_MODE, key);//
return parseByte2HexStr(cipher.doFinal(byteContent));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
당초 인터넷 에서 알고리즘 을 찾 아 안 드 로 이 드 에 직접 인용 해 보 니 틀 렸 다. 하지만 이 클립 스 의 자바 프로젝트 에서 테스트 를 직접 실행 하면 성공 할 수 있 습 니 다.
마지막 으로 안 드 로 이 드 에서 암호 화 하려 면 두 곳 을 설정 해 야 한 다 는 것 을 알 게 되 었 다.
SecureRandom sr = SecureRandom.getInstance(SHA1, CRYPTO);
이 두 곳 은 주의해 야 할 곳 이다.
복호화 코드
Cipher cipher = Cipher.getInstance(CIPHER);// Android
방법 에 대한 소개: AES 암호 화 를 알 고 있다 면 전달 방법 에 대한 매개 변 수 를 이해 할 수 있 습 니 다.
그래도 여기 서 자세히 말씀 드 리 겠 습 니 다.
한 단락 의 데 이 터 를 AES 암호 화 하려 면 그러면 암호 화 할 때 키 를 설정 해 야 합 니 다. 사실은 비밀번호 입 니 다.네가 비밀 번 호 를 설정 한 후에 다른 사람들 은
당신 과 같은 알고리즘 을 사용 하 는 것 도 당신 의 비밀번호 가 있어 야 데 이 터 를 분석 할 수 있 습 니 다.
자, 다음은...
Illegal key size or default parameters 시 해결 방법
이 오류 가 발생 했다 는 것 은 당신 이 설정 한 256 키 길이 형 이 해결 할 수 없다 는 것 을 알려 주 는 것 입 니 다.너무 길다.
그 이 유 는 jre 자체 가 가지 고 있 는 JCE 때 문 입 니 다. :local_policy. jar 와 USexport_policy.jar 너무 늙 었 어.최신 다운로드 가 필요 합 니 다.
다운로드 주소:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
나의 이 링크 는 jce 8 을 제공 하 는데, 일반적으로 최신 것 을 다운로드 하 는 데 큰 문제 가 없다.
다운로드 후 두 개의 jar 파일 이 있 습 니 다. 하 나 는 local 입 니 다.policy. jar 와 USexport_policy.jar
그리고 이 두 개의 jar 파일 을 복사 해서 jdk 의 원본 파일 로 바 꾸 면 됩 니 다.
대체 경로: 자바 \ lib \ security.이 폴 더 에는 그 두 개의 jar 가 있 지만, 우 리 는 신경 쓰 지 않 고, 직접 복사 하여 교체 하면 경로 문제 에 관 해 서 는 내 가 설치 할 때 바로 자바 로 쓸 수 있다.이 가능 하 다, ~ 할 수 있다,...
\jreXX\lib\security
원 하 는 건 Jre 아래 거 바 꾸 는 거 야.
이 럴 때 는 문제 가 없다 는 걸 알 게 될 거 야.
그리고 나 서 나 는 세 번 째 문 제 를 만 났 다.
java.lang.ExceptionInInitializerError 네, 바로 이 오류 입 니 다. 변수 초기 문제 입 니 다.잘못 을 보고 하 다.
내 가 암호 화 를 시작 한 첫 마디 에
많은 설명 문 서 를 보 았 는데 제 jce 가 정확 하지 않 아서 생 긴 것 입 니 다.
그 러 고 보 니 제 이 스 가 잘못 내 렸 더 라 고요.바로 위의 jce 다운로드 입 니 다. 제 가 시작 할 때 내 린 것 은 jce 6 입 니 다.내 jdk 버 전 은 8 이 야.이후 홈 페이지 에서 최신 다운 로드 를 찾 아 교체 한 뒤.
다 OK.
효과.
/**
*
*
* @param content
*
* @param password
*
* @return
*/
public static byte[] decrypt(String content, String password) {
try {
KeyGenerator kgen = KeyGenerator.getInstance(AES);
SecureRandom sr = new SecureRandom();// java pc
// SecureRandom sr = SecureRandom.getInstance(SHA1, CRYPTO);//
// Android
sr.setSeed(password.getBytes());
kgen.init(256, sr);
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, AES);
Cipher cipher = Cipher.getInstance(AES);// java pc
// Cipher cipher = Cipher.getInstance(CIPHER);// Android
cipher.init(Cipher.DECRYPT_MODE, key);//
return cipher.doFinal(parseHexStr2Byte(content));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
결과:
KeyGenerator kgen = KeyGenerator.getInstance(AES);
마지막 으로 이거 야. 데모 효과.안 드 로 이 드 에 사용 하고 싶 으 시 면 주석 에 따라 해당 필드 를 주석 하면 됩 니 다.
http://download.csdn.net/detail/zy987654zy/7863933
ps: 여러분 이 다운로드 한 댓 글 을 보고 제 가 먼저 설명 하 겠 습 니 다. 이 demo 는 안 드 로 이 드 암호 화 에서 안 드 로 이 드 에서 복호화 할 수 있 고 자바 에서 암호 화 하면 자바 에서 복호화 할 수 있 습 니 다.
안 드 로 이 드 암호 화 자바 단 복호화 과정 에 대해 저 는 검증 한 적 이 없습니다. so, 문제 가 있 을 것 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.