Portal | Manuals | References | Downloads | Info | Programs | JCLs | Mainframe wiki | Quick Ref
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Profile Log in to check your private messages Log in
 
How do I encrypt any Password using cobol

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> COBOL Programming
View previous topic :: :: View next topic  
Author Message
mohit.gandhi

New User


Joined: 06 Apr 2006
Posts: 3

PostPosted: Thu Apr 06, 2006 4:51 pm    Post subject: How do I encrypt any Password using cobol
Reply with quote

The Password will come from the user and would be stored in Encrypted form in the VSAM file. So how do go about do it. Please suggest.
Back to top
View user's profile Send private message

DavidatK

Active Member


Joined: 22 Nov 2005
Posts: 700
Location: Troy, Michigan USA

PostPosted: Sat Apr 08, 2006 1:19 am    Post subject: Re: How do I encrypt any Password using cobol
Reply with quote

mohit.gandhi,

How secure do you need the passwords to be?

Keep them from prying eyes, but if someone really wanted, they could maybe break it? A PC put to work on it could break it after a while, or you?d need a mainframe super computer to break the encryption?

There are packages out there that you can purchase if you need the passwords to be super secure, or there are routines that you can write yourself that can be pretty good.

What level of security do you need ?

Dave
Back to top
View user's profile Send private message
mohit.gandhi

New User


Joined: 06 Apr 2006
Posts: 3

PostPosted: Mon Apr 10, 2006 3:27 pm    Post subject: Re: How do I encrypt any Password using cobol
Reply with quote

I want routines that one can write himself. And also the routines to decrypt the same.
Back to top
View user's profile Send private message
DavidatK

Active Member


Joined: 22 Nov 2005
Posts: 700
Location: Troy, Michigan USA

PostPosted: Mon Apr 10, 2006 10:51 pm    Post subject: Re: How do I encrypt any Password using cobol
Reply with quote

mohit.gandhi,

Here?s a simple routine that will encrypt a password. Please read through it so you understand what it?s doing. You can change the algorithm to your own. I have no idea how to un-encrypt this, but that?s good.

One of the objectives of a security system is to, well, keep the passwords secure. If the encrypted password is un-encryptible, even if someone gets a hold of the password repository they cannot determine what a password is for a userid.

You, on the other hand, can verify if a password is correct by re-encrypting and comparing with the stored encrypted password.

The beauty of a routine like this is that the algorithm will produce, for different USERIDs and the same PASSWORD a different encrypted password.

You?ll need to move the LS-USERID, LS-PASSWORD, etc to the linkage section.

Keeping the encryption algorithm secure is also a problem. Even if the source is protected, the object code need to be protected, and the code in a dump needs protecting.






Code:
 

ID DIVISION.                                                   
 PROGRAM-ID.   LOGTIME.                                         
 AUTHOR.       DAVIDATK.                                         
 DATE-WRITTEN. APRIL 2006.                                       
 DATE-COMPILED.                                                 
 ENVIRONMENT DIVISION.                                           
 INPUT-OUTPUT SECTION.                                           
 FILE-CONTROL.                                                   
 DATA DIVISION.                                                 
 FILE SECTION.                                                   
                                                                 
 WORKING-STORAGE SECTION.                                       
                                                                 
 01  SUB-1                       PIC S9(8)    COMP-3.           
 01  SUB-2                       PIC S9(8)    COMP-3.           
 01  SUB-3                       PIC S9(8)    COMP-3.           
                                                                 
 01  WS-KEY                      PIC 9(8)     COMP.             
                                                                 
01  INTEGER-U                   PIC 9(4)     COMP.     
 01  FILLER REDEFINES INTEGER-U.                       
     05  FILLER                  PIC X.                 
     05  CHAR-U                  PIC X.                 
                                                       
 01  INTEGER-1                   PIC 9(4)     COMP.     
 01  FILLER REDEFINES INTEGER-1.                       
     05  FILLER                  PIC X.                 
     05  CHAR                    PIC X.                 
                                                       
 01  WS-WORK-INTEGER             PIC 9(8)     COMP.     
 01  WS-WORK-INTEGER-X REDEFINES WS-WORK-INTEGER       
                                 PIC X(4).             
                                                       
 01  WS-WORK-INTEGER-2           PIC 9(8)     COMP.     
 01  WS-WORK-INTEGER-2-X REDEFINES WS-WORK-INTEGER-2   
                                 PIC X(4).             
                                                       
 01  ENCRYPTED-PASSWORD.                               

     05  ENCRYPTED-CHAR          PIC X                 
                                 OCCURS 8 TIMES.       
                                                       
 01  LS-USERID                   PIC X(8).             
 01  LS-PASSWORD                 PIC X(8).             
 01  LS-FUNCTION                 PIC X(5).             
 01  LS-RETURN-CODE              PIC S9(3).             
                                                       
 LINKAGE SECTION.                                       
                                                       
*01  LS-USERID                   PIC X(8).             
*01  LS-PASSWORD                 PIC X(8).             
*01  LS-FUNCTION                 PIC X(5).             
*01  LS-RETURN-CODE              PIC S9(3).             
                                                       
 PROCEDURE DIVISION.                                   
*PROCEDURE DIVISION USING LS-USERID, LS-PASSWORD,       
*                         LS-FUNCTION, LS-RETURN-CODE   
                                                       
                                                                   
*--- SET USERID AND PASSWORD FOR TESTING                           
                                                                   
     MOVE 'GANDHI  '             TO LS-USERID.                     
     MOVE 'ASDFGHJK'             TO LS-PASSWORD.                   
                                                                   
     MOVE 0                      TO WS-KEY.                         
                                                                   
*--- DEVELOP KEY FROM USERID                                       
                                                                   
     PERFORM                                                       
       VARYING SUB-1 FROM 1 BY 1                                   
       UNTIL SUB-1 > 8                                             
         MOVE LS-USERID(SUB-1:1)   TO CHAR                         
         COMPUTE WS-KEY = (WS-KEY * 3) + INTEGER-1                 
     END-PERFORM.                                                   
                                                                   
     MOVE LOW-VALUES             TO ENCRYPTED-PASSWORD.             
                                                                   
*--- APPLY ALGORITHM TO EACH PASSWORD CHAR USING KEY AND USERID CHAR
                                                                   
     PERFORM                                                       
       VARYING SUB-1 FROM 1 BY 1                                   
       UNTIL SUB-1 > 8                                             
         MOVE 0                  TO INTEGER-1                     
         MOVE LS-PASSWORD(SUB-1:1) TO CHAR                         
         MOVE LS-USERID(SUB-1:1)   TO CHAR-U                       
         COMPUTE WS-WORK-INTEGER = INTEGER-1 * WS-KEY * INTEGER-U 
         DIVIDE WS-WORK-INTEGER BY 8 GIVING WS-WORK-INTEGER-2     
                                     REMAINDER SUB-3               
         ADD 1                   TO SUB-3                         
         MOVE SUB-3              TO SUB-2                         
                                                                   
*------- APPLY TO ENCRYPTED PASSWORD - IF ENCRYPTED PASSWORD CHAR 
*------- LOCATION IN USE, MOVE TO NEXT                             
                                                                   
         PERFORM                                                   
           UNTIL ENCRYPTED-CHAR (SUB-2) = LOW-VALUES               
             ADD +1              TO SUB-2                         
            IF SUB-2 > 8                                       
            THEN                                               
                MOVE 1          TO SUB-2                       
            END-IF                                             
        END-PERFORM                                             
        MOVE WS-WORK-INTEGER-X(2:2)                             
                                TO ENCRYPTED-CHAR (SUB-2)       
    END-PERFORM.                                               
                                                               
    DISPLAY ' USER ID ' LS-USERID                               
            ' PASSWORD ' LS-PASSWORD                           
            ' ENCRYPTED-PASSWORD ' ENCRYPTED-PASSWORD.         
                                                               
    GOBACK.                                                     
                                                               


As you can see from below, this algorithm produces:

For a password of ?ASDFGHJK? for userid ?DAVIDATK? x?A2D0CE74C2CBFD44?

And the same password for useid ?GANGHI? x?F4E05EE384085083?



Code:

USER ID DAVIDATK PASSWORD ASDFGHJK ENCRYPTED-PASSWORD s}?.B...
EECD4CC4CCECCCED4DCEEEDDC4CECCCCDD4CDCDEDECC6DCEEEDDC4ADC7CCF4
42590940415941320712266940124678120553987354071226694020E42BD4

USER ID GANDHI   PASSWORD ASDFGHJK ENCRYPTED-PASSWORD 4\;Td.&c
EECD4CC4CCDCCC444DCEEEDDC4CECCCCDD4CDCDEDECC6DCEEEDDC4FE5E8058
42590940715489000712266940124678120553987354071226694040E34803


Best of luck

Dave
Back to top
View user's profile Send private message
mohit.gandhi

New User


Joined: 06 Apr 2006
Posts: 3

PostPosted: Mon Apr 17, 2006 5:10 pm    Post subject: Re: How do I encrypt any Password using cobol
Reply with quote

Can't we some other routine because I feel this one is not that secure..
Back to top
View user's profile Send private message
dneufarth

Active User


Joined: 27 Apr 2005
Posts: 252
Location: Cincinnati OH USA

PostPosted: Mon Apr 17, 2006 9:42 pm    Post subject:
Reply with quote

if you can determine that this one is not secure enough then you should be able to provide your own algorithm and code.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> COBOL Programming All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts IEW2456E error when link-editing a C ... Senthilraj JCL & VSAM 0 Fri Oct 13, 2017 3:12 pm
No new posts Assembler Macro Copybook converted to... Ziquilix PL/I & Assembler 4 Tue Sep 26, 2017 3:07 am
This topic is locked: you cannot edit posts or make replies. Extract all "IF" Statements... Adarsh Damodaran CLIST & REXX 1 Wed Sep 06, 2017 9:28 am
No new posts ALPHABETIC check in COBOL vidyaa COBOL Programming 8 Thu Aug 17, 2017 7:13 pm
No new posts XML Parse for COBOL 5.2 Bhanu Praveen COBOL Programming 1 Sat Jul 08, 2017 8:58 pm

Facebook
Back to Top
 
Job Vacancies | Forum Rules | Bookmarks | Subscriptions | FAQ | Polls | Contact Us