Android 와. net 이 서로 연 결 된 RSA 암호 화
< RSAKyValue > < Modulus > sYbL... nGb = < / Modulus > < Exponent > AQAB < / Exponent > < / RSAKyValue > 와 같은 공개 키 는 자바 에서 직접 사용 할 수 없습니다.그래서 이 공개 키 를 바 꾸 는 데 사용 할 클래스 RsaHelper 를 인터넷 에서 찾 았 습 니 다.(RsaHelper 다운로드) 그리고:
PublicKey pubKey = RsaHelper.decodePublicKeyFromXml(Global.RSA_PUBLIC_KEY);
encryptedString = RsaHelper.encryptDataFromStr(plaintString,pubKey);
이렇게 하면 RSA 암호 화가 완성 되 고 암호 화 된 결 과 는. net 에 도 성공 적 으로 복호화 할 수 있 습 니 다 (자바 프로젝트 용 jdk 1.6).
그리고 자바 프로젝트 의 코드 를 안 드 로 이 드 프로젝트 (android 2.3) 에 복 사 했 습 니 다. 암호 화 된 콘 텐 츠. net 엔 드 에서 복호화 할 수 없습니다!!
안 드 로 이 드 프로젝트 와 자바 프로젝트 는 같은 코드 와 같은 공개 키 로 같은 문자열 을 암호 화 하 는데 결 과 는 다 릅 니까?
안 드 로 이 드 프로젝트 에서 같은 문자열 을 암호 화 할 때마다 암호 화 결 과 는 일치 합 니 다.그러나 자바 프로젝트 에 서 는 같은 문자열 을 암호 화하 더 라 도 매번 결과 가 다르다.
RsaHelper 의 코드 를 추적 해 보 세 요. 중요 한 몇 마디 는 다음 과 같 습 니 다.
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
return cipher.doFinal(data);
문 제 는 틀림없이 이 Cipher 류 에서 나 온 것 이다.
인터넷 검색 을 통 해 다음 과 같은 내용 을 찾 았 습 니 다.http://blog.csdn.net/sfdev/article/details/2188563)
. Net 환경 에서 매번 RSA 알고리즘 으로 암호 화 할 때마다 서로 다른 결 과 를 얻 을 수 있 습 니 다. 이것 은 매번 에 랜 덤 수 를 추 가 했 기 때 문 입 니 다. 사실은 이런 랜 덤 수의 생 성 도 알고리즘 기준 을 따 릅 니 다. 더욱 전문 적 인 것 은 랜 덤 충전 알고리즘 입 니 다. 예 를 들 어 NoPadding, ISO 10126 Padding, OAEPPadding, PKCS 1 Padding, PKCS5 Padding, SSL 3 Padding 등 입 니 다.
자바 는 주로 Cipher. getInstance 를 통 해 RSA 를 실현 합 니 다. 들 어 오 는 매개 변 수 는 특정한 출력 을 만 들 기 위해 주어진 입력 에서 실 행 된 작업 (또는 한 그룹 작업) 을 설명 하 는 문자열 입 니 다.암호 화 알고리즘 의 이름 을 포함해 야 합 니 다. 뒤에 피드백 모드 와 채 우기 방안 이 있 을 수 있 습 니 다.이러한 실현 은 비교적 유연 하 다. 우 리 는 매개 변 수 를 통 해 서로 다른 피드백 모델 과 충전 방안 을 지정 할 수 있다.예 를 들 어 Cipher. getInstance ("RSA / ECB / PKCS1Padding") 나 Cipher. getInstance ("RSA") 는 모두 가능 하지만 암호 화 된 효과 도 다 를 수 있 습 니 다.
이 를 보면 안 드 로 이 드 프로젝트 에서 getInstance 를 할 때 무 작위 충전 알고리즘 을 지정 하 는 것 이 분명 하 다.
그래서 Cipher ciper = Cipher. getInstance ("RSA");... 로 바꾸다
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
해 봐, 성 공 했 어!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.