SUBROUTINE DES(INPUT,KEY,NEWKEY,ISW,JOTPUT) DIMENSION INPUT(64),KEY(64),JOTPUT(64),ITMP(64),IP(64),IPM(64) * ,ICF(32),KNS(48,16) DATA IP/58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46 * ,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17,9,1,59,5 *1 * ,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7/ DATA IPM/40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,38,6,46,14 * ,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3 * ,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25/ IF(NEWKEY.NE.0)THEN NEWKEY=0 DO 11 I=1,16 CALL KS(KEY,I,KNS(1,I)) 11 CONTINUE ENDIF DO 12 J=1,64 ITMP(J)=INPUT(IP(J)) 12 CONTINUE DO 14 I=1,16 II=I IF(ISW.EQ.1)II=17-I CALL CYFUN(ITMP(33),KNS(1,II),ICF) DO 13 J=1,32 IC=ICF(J)+ITMP(J) ITMP(J)=ITMP(J+32) ITMP(J+32)=IAND(IC,1) C ITMP(J+32)=MOD(MOD(IC,2)+2,2) 13 CONTINUE 14 CONTINUE DO 15 J=1,32 IC=ITMP(J) ITMP(J)=ITMP(J+32) ITMP(J+32)=IC 15 CONTINUE DO 16 J=1,64 JOTPUT(J)=ITMP(IPM(J)) 16 CONTINUE RETURN END