This is a multi-part message in MIME format.

------extPart_000_000A_01C0E4A5.17670C60
Content-Type: text/plain;
	charsetso-8859-1"
Content-Transfer-Encoding: 7bit


Hello,

  I'm having a problem comparing a hexdigest with an item in an array.
I've been hitting walls for a while on this, here's what I've got:

  I'm running 1.6.4 preview 2 on RedHat 7.0 x86.  What I'm trying to do
is take the passwd entered in a form and run it through an MD5 object to
get the hexdigest.  The expected passwd is stored in a file for now and
I compare the two.  Here's the code relating to the login part:

--- Begin Code ---

  def loginPage(error)
    @error  rror
    @page  <FORM ACTION
dmin.rb?loginCheck' METHODOST'>
      <TABLE ALIGN
enter' WIDTH0%' BORDER'> <TR><TD WIDTH%' ALIGNight'>Login ID:</TD> <TD><INPUT TYPEext' NAMEoginID' SIZE0'></TD></TR> <TR><TD WIDTH%' ALIGNight'>Password:</TD> <TD><INPUT TYPEassword' NAMEasswd' SIZE0'></TD></TR> <TR><TD COLSPAN' ALIGN
enter'><INPUT TYPEubmit' VALUEogin'></TD> </TABLE></FORM>" self.printPage(@page,@error) end def loginCheck cgi GI.new if cgi.param("loginID").empty? @error You must enter a login ID before submitting the form." self.loginPage(@error) return elsif cgi.param("passwd").empty? @error You must enter a password before submitting the form." self.loginPage(@error) return end idVal cgi.param("loginID") passVal gi.param("passwd") #Verify that this user exists and check their password. validUser ile.exists?("/var/www/info/#{idVal}") if not validUser @error Invalid user ID or password." self.loginPage(@error) return elsif validUser require 'md5' info ile.open("/var/www/info/#{idVal}", "r") md5 D5.new info.each{ |x| tmp .split(":") if tmp[0] "passwd" ## # This part is the problem. ## case tmp[1].strip when md5.update(passVal).hexdigest.strip print "valid account..." return else @error Invalid user ID or password." # Print the values, if they didn't match. Only for testing. print md5.update(passVal).hexdigest, tmp[1] self.loginPage(@error) return end end } else print "Something odd happened..." end end --- End Code --- I have a case statement in this version, I've tried if/elsif/else as well. I can print out the values of tmp[1].strip and md5.update(passVal).hexdigest.strip; they are identical. I've tried to replace either side with a string literal of the hexdigest, I've used .to_s to ensure they are both strings. They match when using .type on both sides, so I know they are both strings. But using .type is the only time they will match correctly. I've tried to use and eql?. Any help would be *greatly* appreciated; TIA, Wayne PS: Do the code snipets get archived outside of the normal mailing list archives? I was thinking that something scanning the mailing list to add code snipets to the cookbook would be useful, but don't want to repeat any existing system. ------extPart_000_000A_01C0E4A5.17670C60 Content-Type: application/x-pkcs7-signature; namemime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filenamemime.p7s" MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIH3jCCAy4w ggKXoAMCAQICEQDSdi6NFAw9fbKoJV2v7g11MA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVT MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJpbWFy eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05ODA1MTIwMDAwMDBaFw0wODA1MTIyMzU5NTla MIHMMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0 d29yazFGMEQGA1UECxM9d3d3LnZlcmlzaWduLmNvbS9yZXBvc2l0b3J5L1JQQSBJbmNvcnAuIEJ5 IFJlZi4sTElBQi5MVEQoYyk5ODFIMEYGA1UEAxM/VmVyaVNpZ24gQ2xhc3MgMSBDQSBJbmRpdmlk dWFsIFN1YnNjcmliZXItUGVyc29uYSBOb3QgVmFsaWRhdGVkMIGfMA0GCSqGSIb3DQEBAQUAA4GN ADCBiQKBgQC7WkSKBBa7Vf0DeootlE8VeDa4DUqyb5xUv7zodyqdufBou5XZMUFweoFLuUgTVi3H COGEQqvAopKrRFyqQvCCDgLpL/vCO7u+yScKXbawNkIztW5UiE+HSr8Z2vkV6A+HthzjzMaajn9q JJLj/OBluqexfu/J2zdqyErICQbkmQIDAQABo3wwejARBglghkgBhvhCAQEEBAMCAQYwRwYDVR0g BEAwPjA8BgtghkgBhvhFAQcBATAtMCsGCCsGAQUFBwIBFh93d3cudmVyaXNpZ24uY29tL3JlcG9z aXRvcnkvUlBBMA8GA1UdEwQIMAYBAf8CAQAwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBAgUAA4GB AIi4Nzvd2pQ3AK2qn+GBAXEekmptL/bxndPKZDjcG5gMB4ZbhRVqD7lJhaSV8Rd9Z7R/LSzdmkKe wz60jqrlCwbe8lYq+jPHvhnXU0zDvcjjF7WkSUJj7MKmFw9dWBpJPJBcVaNlIAD9GCDlX4KmsaiS xVhqwY0DPOvDzQWikK5uMIIEqDCCBBGgAwIBAgIQSlAM+RGqmoDPqhOvcRc/yDANBgkqhkiG9w0B AQQFADCBzDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 IE5ldHdvcmsxRjBEBgNVBAsTPXd3dy52ZXJpc2lnbi5jb20vcmVwb3NpdG9yeS9SUEEgSW5jb3Jw LiBCeSBSZWYuLExJQUIuTFREKGMpOTgxSDBGBgNVBAMTP1ZlcmlTaWduIENsYXNzIDEgQ0EgSW5k aXZpZHVhbCBTdWJzY3JpYmVyLVBlcnNvbmEgTm90IFZhbGlkYXRlZDAeFw0wMTA0MTcwMDAwMDBa Fw0wMjAzMjIyMzU5NTlaMIIBGjEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl cmlTaWduIFRydXN0IE5ldHdvcmsxRjBEBgNVBAsTPXd3dy52ZXJpc2lnbi5jb20vcmVwb3NpdG9y eS9SUEEgSW5jb3JwLiBieSBSZWYuLExJQUIuTFREKGMpOTgxHjAcBgNVBAsTFVBlcnNvbmEgTm90 IFZhbGlkYXRlZDE0MDIGA1UECxMrRGlnaXRhbCBJRCBDbGFzcyAxIC0gTWljcm9zb2Z0IEZ1bGwg U2VydmljZTEVMBMGA1UEAxQMV2F5bmUgUGllcmNlMSkwJwYJKoZIhvcNAQkBFhp3cGllcmNlQGF0 aGVuYXNlY3VyaXR5LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAohqQ0TiTvNNNi/gR lgWCBXMiZTG5EzfboVfA4w70kstgVncm5BtToUhTWw5JDB+XvuD+kp9JMAcckP44Jn3WcBj2bt81 O+XCrW8MGYZkQQOA0tUQxV1Mslh5jc7k571ZwOqHlf0gyRo+7zRtgFJmWV+HZ/dPS894/MldjnLe guMCAwEAAaOCATgwggE0MAkGA1UdEwQCMAAwgawGA1UdIASBpDCBoTCBngYLYIZIAYb4RQEHAQEw gY4wKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9DUFMwYgYIKwYBBQUHAgIw VjAVFg5WZXJpU2lnbiwgSW5jLjADAgEBGj1WZXJpU2lnbidzIENQUyBpbmNvcnAuIGJ5IHJlZmVy ZW5jZSBsaWFiLiBsdGQuIChjKTk3IFZlcmlTaWduMBEGCWCGSAGG+EIBAQQEAwIHgDAwBgpghkgB hvhFAQYHBCIWIDBjODZjM2RjYTQ2MzdhMzZmYjNlMTg2ZWQyN2QxNDc1MDMGA1UdHwQsMCowKKAm oCSGImh0dHA6Ly9jcmwudmVyaXNpZ24uY29tL2NsYXNzMS5jcmwwDQYJKoZIhvcNAQEEBQADgYEA eCZYXJTEG0NVCJhEOmEMne4uEM9qSQclVYJle/Ya0IKD9LYjAK9QL+xZy1QQ3hMBEGoQh0JqC4J4 KQ/rr93ER4JnOQONO/HrR05rJrIccPR0/2ZtdngSMRYHkufLqBUx5QaA2NW5flw+SXx1MqQpJNzf 2wgDRI9vXJoAkAqqoUcxggM4MIIDNAIBATCB4TCBzDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4x HzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxRjBEBgNVBAsTPXd3dy52ZXJpc2lnbi5j b20vcmVwb3NpdG9yeS9SUEEgSW5jb3JwLiBCeSBSZWYuLExJQUIuTFREKGMpOTgxSDBGBgNVBAMT P1ZlcmlTaWduIENsYXNzIDEgQ0EgSW5kaXZpZHVhbCBTdWJzY3JpYmVyLVBlcnNvbmEgTm90IFZh bGlkYXRlZAIQSlAM+RGqmoDPqhOvcRc/yDAJBgUrDgMCGgUAoIIBrDAYBgkqhkiG9w0BCQMxCwYJ KoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wMTA1MjUwMjU4NDdaMCMGCSqGSIb3DQEJBDEWBBSp m4PDa2QZsYi1BLGHeEwhabE+1DBYBgkqhkiG9w0BCQ8xSzBJMAoGCCqGSIb3DQMHMA4GCCqGSIb3 DQMCAgIAgDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDAHBgUrDgMCGjAKBggqhkiG9w0CBTCB8gYJ KwYBBAGCNxAEMYHkMIHhMIHMMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVy aVNpZ24gVHJ1c3QgTmV0d29yazFGMEQGA1UECxM9d3d3LnZlcmlzaWduLmNvbS9yZXBvc2l0b3J5 L1JQQSBJbmNvcnAuIEJ5IFJlZi4sTElBQi5MVEQoYyk5ODFIMEYGA1UEAxM/VmVyaVNpZ24gQ2xh c3MgMSBDQSBJbmRpdmlkdWFsIFN1YnNjcmliZXItUGVyc29uYSBOb3QgVmFsaWRhdGVkAhBKUAz5 EaqagM+qE69xFz/IMA0GCSqGSIb3DQEBAQUABIGAWhSs1sivzFIH/Bqb+Rw4AOoQW+nTD/vcP9Ob mArbJL9n4WYVm79CjV6huWma123F2qFQeDyb0PB0dqREmv2BrOv1PaQLTgQy+UbTRIASQbkOCjtR lLaT09M/6Wvsf44AAoTfQgQd23YeeuflCtJ48CnMNYIsXxbNDKMClO/YPagAAAAAAAA-----extPart_000_000A_01C0E4A5.17670C60--