I need a webpage to collect several fields of information, encrypt some of the fields with a symmetric cypher, and e-mail the contents of the form to a user.
I also need a small windows app that the user will cut-and-paste the encrypted text and the application will display it un-encrypted.
## Deliverables
I need 2 small applications written. One will be in ASP/.NET and the other will be in C#/.NET. Please do not respond with an offer to do the following in Java, Perl, Ruby-on-rails, etc. .NET code only.
The first application will be an ASP web form to allow people to register for a conference.
It will display a JPG or GIF logo file on the top left (just make one up or copy one, I’ll fix it later) And then centered on the top of the form will be a text. For now use:
2009 Conference of State Leaders
September 13 ??" 16, 2009
Pointe Hilton, Phoenix, AZ
It will take collect the following information:
First Name (mandatory)
Last Name (mandatory)
Company (optional)
Department (optional)
Title (Mandatory)
E-mail address (mandatory)
Address Line 1(Mandatory)
Address Line 2(Optional)
City, State, Zipcode (Mandatory)
Date of arrival: (drop-downs for month and day. No year necessary - Optional).
Date of departure: (same as above - Optional)
Registration type: (Drop-down of: State Government, Non-Profit, Corporate, Student, Day Rate).
Social event one: (drop down ??" you can just use “Golf?? “Fishing?? “Hiking?? “Tour?? as the options)
Social event two: (another drop down, same information as above)
Social event three: (another drop down, same information as above)
Do you require any ADA accommodations? (check box, then a text field)
Do you have any dietary considerations? (check box, then a text field)
Payment method (drop-down of: credit card, check, purchase order, bill my state).
If they select credit card from the drop-down, then the following must be collected from the user:
Credit Card Type (Visa, Master Card, American Express, Discover)
Credit Card Number: (either 13 or 16 Digits)
Credit Card Expiration: (MM/YY)
CCV Number (3 or 4 digits)
(Checkbox/Radio button) Billing address the same as above
If they check that the billing address is NOT the same, then they must provide:
Name (as it appears on the card)
Address 1
Address 2
City, State, Zip.
If the select that the billing address is the same, them the above fields should be hidden.
Submit button.
The ASP application will then turn all of the following information into a plain-text e-mail. The credit card number, exp date, CVV number must be encrypted into a 128-bit symmetric encryption, then turned into a UUEncoded text line. The passphrase will be a static variable that is defined in the code, so that I can change it periodically.
The following error checking should be built into the ASP/.NET form:
If the select credit card:
American Express numbers ALWAYS begin with “3?? and have 13 digits.
Visa numbers always begin with “4?? and have 16 digits.
Mastercard numbers always begin with “5?? and have 16 digits
Discover numbers always begin with “6?? and have 16 digits
CVV numbers are always 3 digits, unless it is American express, then it is 4 digits.
The credit card expiration date should be the same month as now, or some date in the future. No expired cards can be accepted.
E-mail addresses should always contain one “@?? sign and one “.??
Zip code fields are always 5 digits or 9 digits with a hyphen “-“ in-between the 5th and 6th digit (example “20012?? or “20012-4547??
If any of these fail, the form should be redisplayed with the incorrect sections displayed with a red “*?? next to them and a message to correct them.
The above information will then be emailed to an email address for the conference registration staff member in my company. (just make one up for this sample). Also, make up the SMTP server information; I will fill that in later. IF there are no errors in encryption or sending the form, the user will be taken to a screen that confirms that they have successfully registered, and will provide all of the information provided above (except the credit card details). This will also be e-mailed to the e-mail address they provide (The e-mail will be HTML format and will include the logo and conference title ??" see above). If there is an error, the application should display a simple page with a message such as “I’m sorry, a problem with you registration has occurred. Please contact 1-859-536-0252 or someone@[login to view URL] to get assistance??
----
The second part of the project is to develop a C#/.NET application that will run on a standard XP/Vista computer. It will be a simple for that asks for two items:
1) The encryption password (same as the one provided above in a static variable)
2) The cut-and-paste of the UUEncoded text that arrives in the e-mail.
3) A “Decrypt?? button.
The form will then display the credit card information (and billing address) on the form in a simple format that the user can cut-and-paste into their billing software.
The following error checking should be built into the ASP/.NET form:
If the select credit card:
American Express numbers ALWAYS begin with “3?? and have 13 digits.
Visa numbers always begin with “4?? and have 16 digits.
Mastercard numbers always begin with “5?? and have 16 digits
Discover numbers always begin with “6?? and have 16 digits
CVV numbers are always 3 digits, unless it is American express, then it is 4 digits.
The credit card expiration date should be the same month as now, or some date in the future. No expired cards can be accepted.
E-mail addresses should always contain one “@?? sign and one “.??
If any of these fail, the form should be redisplayed with the incorrect sections displayed with a red “*?? next to them and a message to correct them.
The overall idea is the code should be written simple enough that I can modify it later to add/remove fields, perhaps even add a logo graphic to the top of the forms and confirmation e-mails.
All of the encryption should be native to the .NET framework, not based on a component.
I have some .NET coding skills, just no time to generate this project. Please don’t hesitate to ask any questions, and I can answer technical questions regarding coding issues.