Подпись по java и openssl не совпадает

1

Пожалуйста, что я делаю плохо, что результат следующих java и bash не соответствует?

Вот аналогичная тема. Я смог легко написать java (который фактически обсуждается там), но никто не беспокоился о результатах. Для меня, просто, оба результата разные.

Вот часть java, которую я использую (файл pem без пароля):

Security.addProvider(new BouncyCastleProvider());
PEMParser pemParser = new PEMParser(new BufferedReader(new FileReader(pemPath)));
Object object = pemParser.readObject();

JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
KeyPair kp = converter.getKeyPair((PEMKeyPair) object);
PrivateKey privateKey = kp.getPrivate();

Signature sig = Signature.getInstance("RSA");
sig.initSign(privateKey);
sig.update(stringToSign.getBytes());

byte[] bytes = sig.sign();
return new String(Base64.encode(bytes)); //+ close pemParser

Код Bash:

printf $(printf "${string_to_sign}" | openssl rsautl -sign -inkey "${pem_path}" | openssl enc -base64 | awk '{printf "%s", $0}' )
Теги:
rsa
openssl
bouncycastle
sign

1 ответ

0

Возможно, слишком поздно, но если я прочитаю http://www.openssl.org/docs/apps/rsautl.html

rsautl, поскольку он использует алгоритм RSA напрямую, может использоваться только для подписи или проверки небольших фрагментов данных.

Так что это делает сырец подпись без дайджеста, так что я думаю, вы должны использовать NONEwithRSA (см http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню