Шифрование с использованием Groovy - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь зашифровать сообщение, используя Groovy Скрипт. Ниже мой обновленный код, но не работает. не могли бы вы помочь.

Требуется зашифровать сообщение и затем закодировать его на базе 64. У меня есть функция для кодирования, но шифрование не работает.

для информации - 1. У меня есть ключи в хранилище ключей 2. Алгоритм шифрования RSA SHA256

Я уже упоминал этот вопрос - получение исключения IllegalBlockSizeException: данные не должны быть длиннее 256 байт при использовании rsa

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

import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import com.sap.it.api.ITApiFactory;
import com.sap.it.api.keystore.KeystoreService;
import java.security.cert.Certificate;
import java.security.KeyPair;
import java.security.PrivateKey;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import javax.crypto.spec.IvParameterSpec;
import org.apache.commons.codec.binary.Base64;
import groovy.xml.Namespace;
import groovy.util.XmlParser;
import groovy.xml.XmlUtil;

def Message processData(Message message) {
    KeystoreService service = ITApiFactory.getApi(KeystoreService.class, null);
    Certificate cert = service.getCertificate("alias");
    KeyPair keypair = service.getKeyPair("alias");
    PrivateKey privateKey = keypair.getPrivate();

//Body 
    def body = message.getBody(java.lang.String) as String;
    final Cipher cipher = Cipher.getInstance("RSA");
    cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, privateKey);
    def cipherText = cipher.doFinal(body.getBytes());
    return cipherText;
}​

Ошибка

javax.script.ScriptException: java.lang.Exception: 
javax.crypto.IllegalBlockSizeException: Data must not be longer than 245 bytes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...