Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!cbatt!ucbvax!ARIZMIS.BITNET!JMS From: JMS@ARIZMIS.BITNET.UUCP Newsgroups: mod.computers.vax Subject: HPWD.MAR Message-ID: <8701312256.AA02862@ucbvax.Berkeley.EDU> Date: Sat, 31-Jan-87 16:21:00 EST Article-I.D.: ucbvax.8701312256.AA02862 Posted: Sat Jan 31 16:21:00 1987 Date-Received: Sun, 1-Feb-87 05:43:17 EST Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet Lines: 75 Approved: info-vax@sri-kl.arpa HPWD.MAR is, in itself, copyright Digital Equipment Corporation, and it's uncertain that sending it out over the net would be legal. But who cares really? In any case, here is a version in Fortran that only supports one of the encryption algorithms : Call Hash_Password (sysuaf_record,password_string(1:i), c UAF$Q_PWD,UAF$B_ENCRYPT,i) Subroutine Hash_Password(sysuaf_record,UAF$element,offset, c offset_encrypt,password_size) Implicit none * The AUTODIN-II CRC polynomial is used. Include 'SUAF$.INC' Character*64 UAF$element integer*4 password_size Integer*4 offset,offset_encrypt Integer*4 lib$crc,lib$crc_table,istat Integer*4 Poly_mask Integer*4 crc_table(16) Integer*4 init_value integer*4 i integer*4 pwd_long byte pwd_temp(4) Equivalence (pwd_long,pwd_temp(1)) ** Set up the mask and initial CRC value for the Autodin-II polynomial poly_mask = 'edb88320'X init_value = -1 ** Generate the CRC table istat = lib$crc_table(poly_mask,crc_table) crc_table(1) = '00000000000'O crc_table(2) = '03555610144'O crc_table(3) = '07333420310'O crc_table(4) = '04666230254'O crc_table(5) = '16667040620'O crc_table(6) = '15332650764'O crc_table(7) = '11554460530'O crc_table(8) = '12001270474'O crc_table(9) = '35556101440'O crc_table(10) = '36003711504'O crc_table(11) = '32665521750'O crc_table(12) = '31330331614'O crc_table(13) = '23331141260'O crc_table(14) = '20664751324'O crc_table(15) = '24002561170'O crc_table(16) = '27557371034'O ** Hash the password 10 pwd_long = lib$crc(crc_table,init_value, c UAF$element(1:password_size)) sysuaf_record(%loc(offset)+1) = pwd_temp(1) sysuaf_record(%loc(offset)+2) = pwd_temp(2) sysuaf_record(%loc(offset)+3) = pwd_temp(3) sysuaf_record(%loc(offset)+4) = pwd_temp(4) sysuaf_record(%loc(offset)+5) = 0 sysuaf_record(%loc(offset)+6) = 0 sysuaf_record(%loc(offset)+7) = 0 sysuaf_record(%loc(offset)+8) = 0 sysuaf_record(%loc(offset_encrypt)+1) = 0 return +-------------------------------+ | Joel M Snyder | BITNET: jms@arizmis.BITNET | Univ of Arizona Dep't of MIS | ArizoNET: MRSVAX::JMS | Tucson, Arizona 85721 | Pseudo-PhoneNET: (602) 621-2748 +-------------------------------+ (std. disclaimer in re: nobody taking anything I say seriously)