Discussions
Categories
- 196.9K All Categories
- 2.2K Data
- 239 Big Data Appliance
- 1.9K Data Science
- 450.3K Databases
- 221.7K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 550 MySQL Community Space
- 478 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 546 SQLcl
- 4K SQL Developer Data Modeler
- 187K SQL & PL/SQL
- 21.3K SQL Developer
- 295.9K Development
- 17 Developer Projects
- 138 Programming Languages
- 292.6K Development Tools
- 107 DevOps
- 3.1K QA/Testing
- 646K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 155 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 18 Java Essentials
- 160 Java 8 Questions
- 86K Java Programming
- 80 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 204 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 442 LiveLabs
- 38 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 171 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 232 Portuguese
Why "dbms_crypto.mac" doesn't match "openssl" ?

pmalera
Member Posts: 1
When I execute this PL/SQL code which is supposed to sign a message with "sh256" algorythm (Oracle 12.1) :
DECLARE l_temp RAW(4000); c_msg CONSTANT CLOB := 'Here is a message to be signed'; c_key CONSTANT CLOB := '-----BEGIN RSA PRIVATE KEY-----MIICXwIBAAKBgQDTQRqsiQBSWZ1w9aONc2NSZx6kv2vrM70g4aYImANVpsnOjxM6S/gdUXhXo92TyD/sD5AMZzgGyOaRkWc3cSnLRo02IcWvLL2B4zP1P7461TvfkM5pDjiVC8oGQ6x6izRlSQ2x+HAKHhzF7vri9WtK2aWmnnUTnbK2ZyFk4sDi0QIDAQABAoGBAKqRb2sNdwAGsVNKUhLcrr4S2rAkiosujC8nYjqgGlkmwNyRsvGn8x4g8Ky6dyZiUhJUgncxRBBeV6QDJbajHR03NVhn1qWXCzkLIppKz0ta3nCclMohwA25n518s8X7jESLLcS/DZ3qz3ljRxwXs3iZVodDgMxaKD775cQR1NZRAkEA7EiO5XO/kr4jd3xKOPHukRmdKsZlMS2DUTwNnXpxA48T9b4TCn5/ht+Qs7YMtVt2dVHJTNq+UOmYmkhj1cffPQJBAOTh4PYMckkjEU/UEdEBxCAhfOErbiVNSyqZjEcTR3HB97IJWZkC98HKspV9R4qXr/y93ufL8TU2VRenOgO+CyUCQQCMIew9wQwZJ5M5RglvBG0MuTgxKkDRjcCX6RnaD8f+6FhaIkSAsM1JXEYhjxKybHAw3DSa1BCTRDcxKUWsgEGxAkEAtgVomWRmkwFfaCPYE2abKY5YON4IF4Qzreo04+VSIQbHzH+hEI2KqURg53+dIHvnilEZbzACYHYYD9p+ybEePQJBAIivBKeEYeV+ZT5HtwbNv30n35H2WmluSzrEoM0WDj0HTQoaKBcjFEEIgBUeHei2DKdo2L2Lamo9y4BqnSPodIc=-----END RSA PRIVATE KEY-----';BEGIN l_temp := dbms_crypto.mac(src => sys.utl_raw.cast_to_raw(c_msg), key => sys.utl_raw.cast_to_raw(c_key), typ => dbms_crypto.hmac_sh256); l_temp := utl_encode.base64_encode(l_temp); dbms_output.put_line(sys.utl_raw.cast_to_varchar2(l_temp));END;
Result is : SjPV6jCQJg2RlvSOlAJQEP6YToahMja4RklVLDMmV4Q=
But if I do the same operation with openssl:
openssl.exe dgst -sha256 -sign PrivateKey.txt -out Record1.sha1 Record1.txtopenssl.exe enc -base64 -in Record1.sha1 -out Record1.b64 -A
Where "Record1.txt" contain same string as "c_msg" and "PrivateKey.txt" same as "c_key".
I get (Record1.b64) : RJ0Z4HEmJSvrfDwxVjL2Nq+W6NDq2y/LGQi5ADImb5vlatEy8LSlubbiiW/ZuT2E3OTah7ZbP+nlgsQJiPXq/cixkATE7Z+sRbN+bhBG2vUSf37vI2G6nqKBI8L5OO755mjGnVGXtxIncF4LNm6o9PtT4zwmIGDvMRgXcoX7ZXg=
Where is the mistake (in PL/SQL) ? How can I reach the result of "openssl" ?
Thanks for your help.
Answers
This discussion has been closed.