Шифрование с использованием Java Crypto Library и RSA 4096 PublicKey не работает должным образомJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Шифрование с использованием Java Crypto Library и RSA 4096 PublicKey не работает должным образом

Сообщение Anonymous »

Я работаю с третьей стороной, и у нас есть требование зашифровать адреса электронной почты, прежде чем отправлять их по сети для проблем с конфиденциальностью. Когда я шифровал адреса электронной почты, используя OpenSSL в командной строке, все работает нормально. Однако моя реализация Java 8 генерирует зашифрованные строки, которые не могут быть расширены третьей стороной, используя их личный ключ. Вот пример ответа для открытого ключа, который используется для создания открытого ключа локально. < /P>

{"publicKey":"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAh2+Bp9cU/8W2Qp6dUhH4\n7K079gL4IKc2ZnfnkKBZFEdmXUoaVsaEk/oMf/w/coOIbl36bcZVDJrp0okuPGNf\n5XRsIUbClrdPGr/pSEszS4pEZR5PvYMBRF3uile8OikiTAKQlTg+LZhdE2MCHPOv\nLZBAHH6wOj4nO/JsjbRXsNU+JyaDnc6RpFsw6zdcFiTDBSKRW0XukthnqffayWkk\nZ2HcpgJDEq8RbYV1Bb9rObvFmid/Rxj+YdhMqrDmhG5hmPSj/QXEKnuY988aPANa\nfnIRw0JnszOL0FOulVpBLGvQc6BcIaKWxSRUJFb3sM1RKMgJsFyRVLkEaMnCtwtW\ncve8Mhvs3luPM6dvggDUYwivu31Mk8sbAsB846JmpQH4SF2A7CpHo1teX7EgwwLJ\nitX6UfjIaU9Xx6BKFPcW+VgqrFYY5CCBxXD8toS5dbI14RQVUHz+3wFywtBRHO/Q\njk/u83wgdKDH38+TeBiYLUNqZ3DU5E5PU21eOtqTQ7T3g8L1bcq9zhrXGf0ONNOS\nEL0RCGvMgGm5nSMkV1maaYJpd1ArufrIDoSIiK+twpx7Rgkwxe7xPCT4LtJ+lQoC\nswDHd7kxVa4Toa2SqqT79S4+0Z52+Ke4tfRujEkPv5m6oCUwBcUhPGN7K6ie/E7X\nJN9kIq7QLV3ef+QUbzYiZZsCAwEAAQ==\n-----END PUBLIC KEY-----\n","encryptionKeyId":"ENCRYPTION-KEY-ID-2020-04-01T18:00:13.367Z"}
< /code>

Вот пример шифрования строк, используя командную строку, которая работает: < /p>

Сначала получите последний открытый ключ от поставщика. < /p>

curl -s "http://stg.api.bazaarvoice.com/notifica ... c/current/" | jq -r '.publicKey' > public_staging_key.pem

echo "testuser3@mailtest.nexus.bazaarvoice.com" | openssl rsautl -encrypt -pubin -inkey public_staging_key.pem | xxd -p | tr -d '\n' > encrypted_example_1.txt
< /code>

Этот зашифрованный адрес электронной почты может быть должным образом расшифрован третьей стороной с их закрытым ключом.@Bean
@Qualifier(value="keySettings")
public BazaarVoiceKeySettings keySettings() throws IOException {

final String uri = bazaarVoiceSettings.getPiePublicKeyUri();

RestTemplate restTemplate = new RestTemplate();
BazaarVoiceKeyResponse keyResponse = restTemplate.getForObject(uri, BazaarVoiceKeyResponse.class);
BazaarVoiceKeySettings keySettings = new BazaarVoiceKeySettings();

String pubKeyPEM = keyResponse.getPublicKey().replace("-----BEGIN PUBLIC KEY-----\n", "")
.replace("-----END PUBLIC KEY-----", "").replaceAll("\\s", "");

// create the key factory
try {
KeyFactory kFactory = KeyFactory.getInstance("RSA");
// decode base64 of your key
byte[] decodedBytes = Base64.getMimeDecoder().decode(pubKeyPEM);
// generate the public key
X509EncodedKeySpec spec = new X509EncodedKeySpec(decodedBytes);
RSAPublicKey rsaPublicKey = (RSAPublicKey) kFactory.generatePublic(spec);

Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWITHSHA-512ANDMGF1PADDING");
cipher.init(Cipher.ENCRYPT_MODE, rsaPublicKey);

keySettings.setCipher(cipher);
keySettings.setEncryptionKeyId(keyResponse.getEncryptionKeyId());
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}

return keySettings;
}
< /code>

private String encryptEmail(String emailAddress) throws BadPaddingException, IllegalBlockSizeException {
Cipher cipher = keySettings.getCipher();
byte[] cipherText = cipher.doFinal(emailAddress.getBytes(Charsets.UTF_8));
String encryptedString = DatatypeConverter.printHexBinary(cipherText);

return encryptedString;
}


Подробнее здесь: https://stackoverflow.com/questions/613 ... g-properly
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»