2017-01-06 1 views
0

У меня есть проект android и используется шифрование RSA, и он работает нормально между клиентом android и java-сервером. Открытый ключ и закрытый ключ были созданы с использованием API android. Теперь я хочу использовать тот же RSA в проекте IOS и использовать те же ключи. К сожалению, это не работает. Я могу шифровать и расшифровывать только клиент IOS, и это правильно. При расшифровке на java-сервере он получил ошибку. Использование kSecPaddingPKCS1 для шифрования и RSA/NONE/OAEPWithSHA1AndMGF1Padding для дешифрования.RSA encrypt in ios и дешифрование в java-сервере не работает

ссылка: 1. RSA: encrypt in iOS, decrypt in Java 2. RSA implementations in Objective C

Может кто-нибудь помочь, спасибо.

+0

Было бы полезно, если бы вы опубликовали код, который используете не ссылки на примеры – pedrofb

ответ

0

Итак, вы говорите, что можете зашифровать и расшифровать в iOS cilent, он выражает, что ваш открытый ключ и закрытый ключ являются правильными. Поэтому проблема заключается в том, что между чистым и сервером. Я когда-либо делал это в своем проекте, поэтому я мог бы кое-что указать вам.

1.RSA-ключ имеет несколько разных бит. Как 512bit, 1024bit. Вы должны проверить this.Encrypt в iOS использовать один и тот же бит с расшифровкой в ​​java-сервере.

2. Вы используете дополнительное шифрование. Как и base64, вы также проверяете, что вы используете тот же стиль с вашим java-сервером.

это родственная статья: http://www.jianshu.com/p/db85399e8a76 Надежда может вам помочь.

+0

Спасибо. Я уверен, используя тот же бит между IOS и Java. И я тоже использовал base64. Но это все еще не сработало. – user6299706

+0

Возможно, проблема в base64. Вы можете попробовать использовать другой стиль в base64, например, websafe/NoPadding/Padding и т. Д. Важно использовать тот же стиль в base64. – pusswzy

1

Я вижу (с моим ограниченным знанием криптографии) вы используете разные алгоритмы для шифрования и дешифрования, и они несовместимы.

Изменить kSecPaddingPKCS1 с kSecPaddingOAEP как предполагает принятый ответ первой ссылки.

+0

Да, я заменил kSecPaddingPKCS1 на kSecPaddingOAEP, и это тоже не сработало. Я могу зашифровать и расшифровать в моем приложении клиент. @pedrofb, спасибо – user6299706

+0

Опубликовать код iOS и Java для его анализа – pedrofb