AES 암호 화 안 드 로 이 드 와 자바 에서 의 활용

4292 단어 Android자바
최근 에 언급 된 데 이 터 는 AES 암호 화 를 해 야 하기 때문에 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, 문제 가 있 을 것 입 니 다.

좋은 웹페이지 즐겨찾기