2017-01-06 1 views
0

나는 안드로이드 프로젝트를 가지고 있으며 RSA 암호화를 사용했으며, 안드로이드 클라이언트와 자바 서버 사이에서 잘 작동합니다. 공개 키 및 개인 키는 Android API를 사용하여 생성되었습니다. 이제는 IOS 프로젝트에서 동일한 RSA를 사용하고 동일한 키를 사용하려고합니다. 불행히도 잘 작동하지 않습니다. IOS 클라이언트에서만 암호화하고 해독 할 수 있습니다. 자바 서버에서 암호 해독되면 오류가 발생합니다. 암호화에 kSecPaddingPKCS1을 사용하고 해독을 위해 RSA/NONE/OAEPWithSHA1AndMGF1Padding을 사용합니다.RSA가 ios에서 암호화하고 java 서버에서 암호 해독이 작동하지 않습니다.

참조 : 1. RSA: encrypt in iOS, decrypt in Java 2. RSA implementations in Objective C

사람의 도움이, 감사 할 수 있습니다.

+0

예를 들어 링크를 사용하지 않는 코드를 게시하면 도움이 될 것입니다. – pedrofb

답변

0

그래서 iOS 용 cilent에서 암호화하고 해독 할 수 있다고 말하면 공개 키와 개인 키가 맞다고 표현할 수 있습니다. 따라서 문제는 cilent와 server 사이입니다. 나는 내 프로젝트에서이 일을 해왔으므로 나는 당신에게 어떤 의미가있다.

1.RSA 키에는 약간 다른 비트가 있습니다. 512 비트, 1024 비트와 같습니다. iOS에서 this.Encrypt를 확인하면 java 서버에서 해독과 동일한 비트를 사용합니다.

2. 추가 암호화를 사용합니다. base64와 마찬가지로, 자바 서버와 동일한 스타일을 사용하는지 확인한다.

관련 기사 : http://www.jianshu.com/p/db85399e8a76 희망이 당신을 도울 수 있습니다.

+0

감사합니다. 나는 IOS와 Java 사이에서 같은 비트를 사용하고 있다고 확신한다. 그리고 저는 base64도 사용했습니다. 그러나 그것은 여전히 ​​효과가 없었습니다. – user6299706

+0

문제는 base64에있을 수 있습니다. websafe/NoPadding/Padding 등의 다른 스타일을 base64에서 사용할 수도 있습니다. base64에서 같은 스타일을 사용하는 것이 중요합니다. – pusswzy

1

나는 (암호화에 대한 나의 제한된 지식으로) 다른 알고리즘을 사용하여 암호화 및 해독하는 것을 볼 수 있으며 호환되지 않습니다.

kSecPaddingPKCS1kSecPaddingOAEP으로 변경하면 첫 번째 링크의 대답을 제안합니다.

+0

예, kSecPaddingPKCS1을 kSecPaddingOAEP로 바꿔서 작동하지 않았습니다. 내 앱 클라이언트에서 암호화하고 해독 할 수 있습니다. @pedrofb, 고맙습니다. – user6299706

+0

iOS 및 Java 코드를 분석하여 게시 – pedrofb

관련 문제