This is a multi-part message in MIME format.
------ extPart_000_000A_01C0E4A5.17670C60
Content-Type: text/plain;
charset so-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' METHOD OST'>
<TABLE ALIGN
enter' WIDTH0%' BORDER '>
<TR><TD WIDTH%' ALIGN ight'>Login ID:</TD>
<TD><INPUT TYPE ext' NAME oginID' SIZE0'></TD></TR>
<TR><TD WIDTH%' ALIGN ight'>Password:</TD>
<TD><INPUT TYPE assword' NAME asswd'
SIZE0'></TD></TR>
<TR><TD COLSPAN' ALIGN
enter'><INPUT TYPE ubmit'
VALUE ogin'></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;
name mime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename mime.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--