Шифрование по алгоритму RSA с длинной ключа 2048

AlexProOra
Дата: 29.10.2015 11:37:14
Имею 12с, DBMS_CRYPTO у нас умеет:
Делать хэши - MD5, SHA-1, SHA-2 (SHA-256, SHA-384, SHA-512), MD4
Шифровать - DES, 3DES, AES, RC4, 3DES_2KEY

Соотв. получается что зашифровать по алгоритму RSA я не смогу на уровне СУБД?

Решение:
1. Java.
2. внешние библиотеки.

По первому пункту, в СУБД зарегистрированы следующие java классы:
com/sun/crypto/provider/RSACipher
com/sun/crypto/provider/TlsRsaPremasterSecretGenerator
com/sun/net/ssl/internal/ssl/HandshakeMessage$RSA_ServerKeyExchange
com/sun/net/ssl/internal/ssl/RSAClientKeyExchange
com/sun/net/ssl/internal/ssl/RSASignature
com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureBaseRSA
com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureBaseRSA$SignatureRSAMD5
com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureBaseRSA$SignatureRSARIPEMD160
com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureBaseRSA$SignatureRSASHA1
com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureBaseRSA$SignatureRSASHA256
com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureBaseRSA$SignatureRSASHA384
com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureBaseRSA$SignatureRSASHA512
com/sun/org/apache/xml/internal/security/keys/content/keyvalues/RSAKeyValue
com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/RSAKeyValueResolver
java/awt/ContainerOrderFocusTraversalPolicy
java/awt/DefaultFocusTraversalPolicy
java/awt/FocusTraversalPolicy
java/security/interfaces/RSAKey
java/security/interfaces/RSAMultiPrimePrivateCrtKey
java/security/interfaces/RSAPrivateCrtKey
java/security/interfaces/RSAPrivateKey
java/security/interfaces/RSAPublicKey
java/security/spec/RSAKeyGenParameterSpec
java/security/spec/RSAMultiPrimePrivateCrtKeySpec
java/security/spec/RSAOtherPrimeInfo
java/security/spec/RSAPrivateCrtKeySpec
java/security/spec/RSAPrivateKeySpec
java/security/spec/RSAPublicKeySpec
javax/swing/InternalFrameFocusTraversalPolicy
javax/swing/LayoutFocusTraversalPolicy
javax/swing/LegacyGlueFocusTraversalPolicy
javax/swing/LegacyLayoutFocusTraversalPolicy
javax/swing/SortingFocusTraversalPolicy
javax/swing/SwingContainerOrderFocusTraversalPolicy
javax/swing/SwingDefaultFocusTraversalPolicy
oracle/aurora/util/NodeTraversal
oracle/aurora/zephyr/backend/GenericLinearScanAllocator$CallerSaveTempProxyInserter
oracle/aurora/zephyr/backend/GenericLinearScanAllocator$CallerSaveTempProxyInserter$BSIteratorProxyMaker
oracle/aurora/zephyr/lir/MagicCallerSaveTempRestoreInstr
oracle/aurora/zephyr/lir/MagicCallerSaveTempSaveInstr
oracle/xml/parser/v2/XMLTraversalEvent
org/jcp/xml/dsig/internal/dom/DOMSignatureMethod$SHA1withRSA
org/jcp/xml/dsig/internal/dom/DOMSignatureMethod$SHA256withRSA
org/jcp/xml/dsig/internal/dom/DOMSignatureMethod$SHA384withRSA
org/jcp/xml/dsig/internal/dom/DOMSignatureMethod$SHA512withRSA
org/w3c/dom/traversal/DocumentTraversal
org/w3c/dom/traversal/NodeFilter
org/w3c/dom/traversal/NodeIterator
org/w3c/dom/traversal/TreeWalker
sun/security/internal/spec/TlsRsaPremasterSecretParameterSpec
sun/security/krb5/internal/crypto/RsaMd5CksumType
sun/security/krb5/internal/crypto/RsaMd5DesCksumType
sun/security/rsa/RSACore
sun/security/rsa/RSACore$BlindingParameters
sun/security/rsa/RSACore$BlindingRandomPair
sun/security/rsa/RSAKeyFactory
sun/security/rsa/RSAKeyPairGenerator
sun/security/rsa/RSAPadding
sun/security/rsa/RSAPrivateCrtKeyImpl
sun/security/rsa/RSAPrivateKeyImpl
sun/security/rsa/RSAPublicKeyImpl
sun/security/rsa/RSASignature
sun/security/rsa/RSASignature$MD2withRSA
sun/security/rsa/RSASignature$MD5withRSA
sun/security/rsa/RSASignature$SHA1withRSA
sun/security/rsa/RSASignature$SHA256withRSA
sun/security/rsa/RSASignature$SHA384withRSA
sun/security/rsa/RSASignature$SHA512withRSA
sun/security/rsa/SunRsaSign
sun/security/tools/UserSaveCancelButtonListener
sun/security/tools/UserSaveNoButtonListener
sun/security/tools/UserSaveYesButtonListener

Добрый люди, помогите, можноли использовать например sun/security/rsa/SunRsaSign или sun/security/rsa/RSASignature для сабжа?

По пункту 2 нарыл вот такой проект - http://www.didisoft.com/ora-rsa/ но он тоже фактически использует Java.

Спасибо!
Андрей Панфилов
Дата: 29.10.2015 12:10:16
AlexProOra,

вы что-то странное хотите, никто в здравом уме данные при помощи RSA не шифрует.
ArtNick
Дата: 29.10.2015 12:15:25
Андрей Панфилов,
Ключ тоже данные :)
AlexProOra
Дата: 29.10.2015 12:57:58
Андрей Панфилов
AlexProOra,

вы что-то странное хотите, никто в здравом уме данные при помощи RSA не шифрует.


Шифруем хэши сообшений отправляемых на web сервис.
Андрей Панфилов
Дата: 29.10.2015 13:29:36
AlexProOra
Шифруем хэши сообшений отправляемых на web сервис.
Я правильно понял что у вас есть открытый ключ и размер ваших "хешей" не превышает 245 байт? тогда на жаве будет что-то в духе:

X509EncodedKeySpec publicSpec = new X509EncodedKeySpec(x509ecodedpublickeybytearray);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(publicSpec);
byte[] message = "Hello World".getBytes("UTF8");
// или RSA/ECB/PKCS1Padding
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA1AndMGF1Padding");   
cipher.init(Cipher.ENCRYPT_MODE, publicKey);  
byte[] encrypted = return cipher.doFinal(message);
AlexProOra
Дата: 29.10.2015 13:37:46
Андрей Панфилов,
Спасибо! попробую, если получится, реализацию выложу.

Господа! может еще варианты есть?
AlexProOra
Дата: 29.10.2015 13:41:03
Андрей Панфилов,

+ хэши считаем с использованием DBMS_CRYPTO - SHA-512