support: Customer Portal
Focused on delivering choice, investment protection and flexibility to organizations with valuable COBOL assets
 

Veryant Knowledge Base
Home > All Categories > isCOBOL General > Where can I find more information on A$ENCRYPT and A$DECRYPT?
Question Title Where can I find more information on A$ENCRYPT and A$DECRYPT?

Question:

Where can I find more information on A$ENCRYPT and A$DECRYPT? I am getting errors involving 'padding' and 'multiple of 8 bytes' when I use these routines.

Answer:

The size of the key passed to A$ENCRYPT or A$DECRYPT must be less than or equal to 128-bits (i.e. 16 bytes). For example, use the following data item for your encryption key:
  77  encryption-key        pic x(16).
When A$ENCRYPT returns, the length of the encrypted-data is set to an exact value, and in A$DECRYPT the length of data-to-decrypt must be exact. Use items defined as PIC X ANY LENGTH to ensure that you can retrieve and set the lengths precisely. For example, use the following data items for your encrypted-data and data-to-decrypt:
  77  encrypted-data        pic x any length. 
  77  data-to-decrypt       pic x any length.

Then, for example, you can take the output from A$ENCRYPT (i.e. encrypted-data) and pass it as the input to A$DECRYPT (i.e. data-to-decrypt) to reverse the encryption.

See the attached sample program, encryption.cbl

Note that the encrypted data is binary and is not an encoded character string.

The A$ENCRYPT routine does the equivalent of the following Java code:
  public final static String CRYPT_ALGORITHM = "Blowfish";
  Cipher cipher = Cipher.getInstance(CRYPT_ALGORITHM);
  cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptionKey, 0, encryptionKey.length, CRYPT_ALGORITHM));
  byte[] encryptedData = cipher.doFinal(dataToEncrypt, 0, dataToEncrypt.length));
where dataToEncrypt, encryptionKey and encryptedData are the 3 parameters passed to A$ENCRYPT.

The A$DECRYPT routine does the equivalent of the following Java code:

  public final static String CRYPT_ALGORITHM = "Blowfish";
  Cipher cipher = Cipher.getInstance(CRYPT_ALGORITHM);
  cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(encryptionKey, 0, encryptionKey.length, CRYPT_ALGORITHM));
  byte[] decryptedData = cipher.doFinal(dataToDecrypt, 0, dataToDecrypt.length));
where dataToDecrypt, encryptionKey and decryptedData are the 3 parameters passed to A$DECRYPT.

PKCS5Padding is the default padding scheme for Blowfish ciphers.

Detailed information can be found in the Java™ Cryptography Architecture (JCA) Reference Guide here.

Authored by: Veryant Support This question has been viewed 6125 times so far.
Click Here to View all the questions in isCOBOL General category.
File Attachments File Attachments
How helpful was this article to you?
User Comments User Comments Add Comment
There are no user comments for this question. Be the first to post a comment. Click Here
Related Questions Related Questions
  1. How do I compile for compatibility with older versions of Java?
  2. When can I get the "java.net.SocketException: Permission denied:connect" message? And how can it be avoided?
  3. How do I migrate indexed files to a format that is supported by isCOBOL?
  4. How do I resolve "code too large for try statement" errors?
  5. How do I prevent hackers from decompiling Java class files to reverse engineer my COBOL application?
  6. What Micro Focus library routines are supported?
  7. Do I need to worry about the compile warning "Note: MYPROG.java uses unchecked or unsafe operations?"
  8. How can I read an Excel spreadsheet from COBOL?
  9. Does SET ADDRESS OF X TO Y work?
  10. How do I create a desktop shortcut icon to launch my program?
  11. Is there currently a way to debug COBOL and Java source together?
  12. What tools are available for automated functional (regression) testing of a COBOL application?
  13. Where can I obtain a copy of the ANSI 2002 COBOL standard?
  14. How do I increase the maximum Java heap size when compiling?
  15. How do I set up isCOBOL to access Vision files?
  16. How do I resolve a compile error on PIC X(2) USAGE COMP-5?
  17. Should I use JISAM or isCOBOL ISAM Server (c-treeACE)?
  18. How can I package my application and execute it in a JAR file?
  19. What is the best way to control Microsoft Word?
  20. How would I create my own CBL_ALLOC_MEM and CBL_FREE_MEM routines?
  21. How can I use the F10 key in my application without it changing the keyboard focus?
  22. What is the recommended method for specifying isCOBOL framework properties?
  23. How do I get my screens to be the same size and spacing as when I run with ACUCOBOL?
  24. How do I turn on debug trace to produce a log file?
  25. Does isCOBOL work with Flexus COBOL sp2?
  26. How do I use conditional compilation?
  27. Why do I get a compile error "--S: Invalid open mode" on an OPEN I-O of an ORGANIZATION LINE SEQUENTIAL file?
  28. How do I change the icon in the upper left corner of the Window?
  29. What is the behavior difference of STOP THREAD?
  30. What are the defaults for the DATE-ENTRY control DISPLAY-FORMAT property and format styles?
  31. How do I select 11x17 paper size using WIN$PRINTER?
  32. Why do I get the error message "Native call not found" and how do I fix the problem?
  33. Sending SMTP mail
  34. How do I specify properties or a properties file on the command line?
  35. How would I create my own CBL_CHECK_FILE_EXIST routine?
  36. How does a program detect at runtime whether it is running standalone GUI, thin client or with Web Direct 2.0?
  37. How do I compile fixed (ANSI) format source that COPYs terminal format source or vice versa?
  38. What are the key technical advantages of isCOBOL?
  39. Can Veryant recommend a good Web site to find 3rd party JavaBeans?
  40. Does isCOBOL run on Linux on System z?
  41. Can isCOBOL access a DLL or .so that is in a JAR file?
  42. Why do I get the error java.lang.NoClassDefFoundError: com/iscobol/rts_n/StopRunException?
  43. What compile option should I use for ICOBOL compatibility?
  44. How do I write my own replacement for a C$ library routine?
  45. How do I print to a spooler in Unix?
  46. What is the easiest and/or best way to convert a legacy text-based user interface to a web front end?
  47. Is the isCOBOL 2009 SP1 release intended to deploy mainframe applications over the cloud? Or is it an integration mechanism for bringing in cloud data and apps?
  48. Is there any equivalent to COPY RESOURCE?
  49. What algorithm does isCOBOL use to load framework properties (runtime config variables)?
  50. How do I set iscobol.file.index.FileName with variable file name assignments?
  51. Where can I learn more about Classpath, the Java class loader, JDK tools and utilities?
  52. Does isCOBOL APS run on z/OS?
  53. How do I specify which file status codes I want to use?
  54. How do I get more information when I get java.lang.reflect.InvocationTargetException?
  55. How do I configure file locations with environment variables?
  56. Can I use directory paths in CALL names?
  57. How can I make my isCOBOL program to be called instead of a C routine when both have the same name?
  58. I've heard there is a problem passing pointers to C functions. What is it?
  59. How can I tell what changes were made in the isCOBOL latest update?
  60. Is your runtime library backward compatible?
  61. What should I use for USAGE HANDLE items instead of NULL?
  62. What is the best way to profile an isCOBOL program?
  63. Can you derive isCOBOL object classes from Java and vice versa?
  64. How do I suppress multiple reserved words with the -rw compiler option?
  65. Is there a way to have single set of source code that will compile with both ACUCOBOL and isCOBOL?
  66. Can the file system (iscobol.file.index) be set programmatically?
  67. Does isCOBOL support Crystal Reports or other Report Writers?
  68. Does isCOBOL support C$REDIRECT?
  69. Is there any way to use isCOBOL with SCO 5.0.6 (JDK 1.3)?
  70. Is isCOBOL backward compatible?
  71. How do I determine what properties are set?
  72. Why do I get the error message “java.lang.UnsatisfiedLinkError: no ### in java.library.path?
  73. How can I monitor a jvm started on a remote computer box?
  74. How can I avoid the "java.lang.OutOfMemoryError: PermGen space" error?
  75. Can I call an RMCobol program passing parameters to it?
  76. Why do I get the error message "java.lang.ArrayIndexOutOfBoundsException" ?
  77. Why do I get the error message "java.lang.NullPointerException" ?
  78. How can I avoid, in execution, the "java.lang.OutOfMemoryError: Java heap space" error?
  79. What does mean the error NO X11 DISPLAY?
  80. I still get the error : "Missing License: The license key is missing, invalid or has expired!" I can't figure out why
  81. How do I resolve the error "java.lang.NoClassDefFoundError" or "java.lang.ClassNotFoundException"?
  82. Why do I get the error "Could not load the main class" ?
  83. Is there any way to direct the output from the “Print Screen” keyboard key directly to a printer?
  84. Did you know how to write custom information inside isCOBOL log file?
  85. Did you know that in a string you can replace a text with a new one with a different length by using the C$REPLACE_ALL routine?
  86. Did you know you could set properties to configure the PDF'S generation while printing?
  87. Did you know you can encrypt the communication with the isCOBOL Server?
Article Information Additional Information
Article Number: 138
Created: 2010-07-21 12:12 PM
Rating: 3 Stars
 
Article Options Article Options
Print Question Print this Question
Email Question Email Question to Friend
Export to Adobe PDF Export to PDF File
Export to MS Word Export to MS Word
Bookmark Article
Subscribe to Article Subscribe to Article
 
Search Knowledge Base Search Knowledge Base



 
 

© Veryant - All Rights Reserved
Veryant and isCOBOL are trademarks or registered marks of Veryant in the United States and other countries. All other marks are the property of their respective owners.