|
I am trying to encrypt and decrypt using the functions below. Encryption is successful but decryption will return Bad Data. The Utils.byteToHexStr is a function to convert a hexadecimal string into a byte array where by each two characters of the hexadecimal string are combined to create one byte. (eg. 0x31 0x32 0x33 0x34 (ASCII 1234) -> 0x12 0x34). This is the requirement of the inputdata for encryption and decryption.
crypto.DesEncrypt("1234567812345678", "123456789012345678901234567890123456789012345678", "0000000000000000");
- > the code above got 0x2D 0xC8 0x88 0xCA 0x7D 0x62 0x17 0xE7 as result. However, to restore the original value using the code below, the program complain "Bad Data". I have tried all sorts of ways but still to no avail. Please provide me some advices.
crypto.DesDecrypt("2DC888CA7D6217E7", "123456789012345678901234567890123456789012345678", "0000000000000000");
public static byte[] DesEncrypt(string stringToEncrypt, string szKey, string szIV)
{
byte[] data = Utils.byteToHexStr(stringToEncrypt);
byte[] m_bDESKey = Utils.byteToHexStr(szKey);
byte[] m_bDESIV = Utils.byteToHexStr(szIV);
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.Mode = CipherMode.ECB;
MemoryStream ms = new MemoryStream(4096);
CryptoStream encStream = new CryptoStream(ms,des.CreateEncryptor(m_bDESKey, m_bDESIV),CryptoStreamMode.Write);
encStream.Write(data,0,data.Length);
//encStream.FlushFinalBlock();
//calculate the length of the encrypted data
byte[] bResult = new byte[ms.Position];
ms.Position = 0;
ms.Read(bResult, 0, bResult.Length) ;
encStream.Close();
return bResult;
}
public static string DesDecrypt(string stringToDeCrypt, string szKey, string szIV)
{
byte[] data = Utils.byteToHexStr(stringToDeCrypt);
byte[] m_bDESKey = Utils.byteToHexStr(szKey);
byte[] m_bDESIV = Utils.byteToHexStr(szIV);
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.Mode = CipherMode.ECB;
MemoryStream ms = new MemoryStream(4096);
CryptoStream encStream = new CryptoStream(ms,des.CreateDecryptor(m_bDESKey, m_bDESIV),CryptoStreamMode.Read);
ms.Write(data,0,data.Length);
ms.Position = 0;
string strResult = new StreamReader(encStream).ReadToEnd();
encStream.Close();
return strResult;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public static byte[] byteToHexStr(string szHexString)
{
int discarded;
byte[] byteArray = HexEncoding.GetBytes(szHexString, out discarded);
if (discarded > 0)
{
return null;
}
return byteArray;
}
public static byte[] GetBytes(string hexString, out int discarded)
{
discarded = 0;
string newString = "";
char c;
// remove all none A-F, 0-9, characters
for (int i=0; i<hexstring.length; i++)
="" {
="" c="hexString[i];
" if="" (ishexdigit(c))
="" newstring="" +="c;
" else
="" discarded++;
="" }
="" odd="" number="" of="" characters,="" discard="" last="" character
="" (newstring.length="" %="" 2="" !="0)
" newstring.length-1);
="" }
="" int="" bytelength="newString.Length" 2;
="" byte[]="" bytes="new" byte[bytelength];
="" string="" hex;
="" j="0;
" for="" (int="" i="0;" i<bytes.length;="" hex="new" string(new="" char[]="" {newstring[j],="" newstring[j+1]});
="" bytes[i]="HexToByte(hex);
" return="" bytes;
="" public="" static="" tostring(byte[]="" bytes)
="" hexstring="" ;
="" hexstring;
="" <summary="">
/// Determines if given string is in proper hexadecimal string format
///
/// <param name="hexString" />
/// <returns>
public static bool InHexFormat(string hexString)
{
bool hexFormat = true;
foreach (char digit in hexString)
{
if (!IsHexDigit(digit))
{
hexFormat = false;
break;
}
}
return hexFormat;
}
///
/// Returns true is c is a hexadecimal digit (A-F, a-f, 0-9)
///
/// <param name="c" />Character to test
/// <returns>true if hex digit, false if not
public static bool IsHexDigit(Char c)
{
int numChar;
int numA = Convert.ToInt32('A');
int num1 = Convert.ToInt32('0');
c = Char.ToUpper(c);
numChar = Convert.ToInt32(c);
if (numChar >= numA && numChar < (numA + 6))
return true;
if (numChar >= num1 && numChar < (num1 + 10))
return true;
return false;
}
///
/// Converts 1 or 2 character string into equivalant byte value
///
/// <param name="hex" />1 or 2 character string
/// <returns>byte
private static byte HexToByte(string hex)
{
if (hex.Length > 2 || hex.Length <= 0)
throw new ArgumentException("hex must be 1 or 2 characters in length");
byte newByte = byte.Parse(hex, System.Globalization.NumberStyles.HexNumber);
return newByte;
}
|
|
|
|
|
i have a listbox and i want to put the list items (just the text) shown in an excel sheet.
how can i achieve this using `ctrl + c`, `crtl + v`? how can i catch the ctrl + c keypress event and have access to windows transfer area in .NET?
thanks in advance
|
|
|
|
|
What you would do is hook into the KeyPress event. The event arguments pass the key information.
|
|
|
|
|
Does anyone know the status with NDoc?
Obviously I've read their webpage and it looks like activity is slow or dead. I've tried NDoc 1.3 against VS2005 and it doesn't work. Its such an awesome application I hate to see it go stale.
|
|
|
|
|
It's dead. It was announced a few weeks ago by the NDoc founder. Microsoft started a new project, SandCastle[^], to replace the now-dead NDoc.
|
|
|
|
|
Right on!
|
|
|
|
|
Well, thanks for a definite answer, although its sad indeed. Just downloaded Sandcastle... there's no front end like NDoc? Has anyone actually used this tool?
|
|
|
|
|
AFAIK it's working and was used by Microsoft to build framework documentation. Take a look at the following article which allows you to keep the look and feel of NDoc while working with Sandcastle. Sandcastle Builder.asp[^]
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." - Rick Cook www.troschuetz.de
|
|
|
|
|
Our posts crossed. Okay, great link. I'll have a look. Thanks!
|
|
|
|
|
Hi Guys,
I'm working on a C# form which hosts a Flash movie. That works fine.
I want to run this as the Flash Player can do in full screen mode. I've got as far as hiding the task bar and stretching my form beyond the bounds of the screen so that only the Flash movie is visible... nearly. Although I can hide the taskbar (using InterOp and ShowWindow(SW_HIDE)) my form simply will not stretch into the area where the hidden taskbar once sat!
My fall-back is to auto-hide the taskbar but this is not really an acceptable solution. Does anyone know a way to create a form which truly runs full screen?
Many thanks,
Simon
|
|
|
|
|
srev wrote: Does anyone know a way to create a form which truly runs full screen?
Have you looked at Managed DirectX? I know that can do it pretty easily.
|
|
|
|
|
Thanks for the thought, but unfortunately I can't use Flash with DirectX.
|
|
|
|
|
NO, just use directx for the full screeen functionality.
/\ |_ E X E GG
|
|
|
|
|
I'm not sure if I should be using this forum or the SQL Server forum, but I'll start here. I have been tasked with writing a project that, as part of its duties, will attach to a SQL Server database (2000 now, 2005 in the near future), and retrieve the columns that a stored procedure will return. I'm using the OleDB provider on purpose, as opposed to System.Data.SqlClient, because of the possible future need to support other systems. Currently, I'm doing the following:
<br />
private DataTable GetFields()<br />
{<br />
DataTable tbl = new DataTable();<br />
<br />
using (OleDbConnection conn = new OleDbConnection(txtConnectionString.Text))<br />
{<br />
try<br />
{<br />
conn.Open();<br />
<br />
using (OleDbCommand cmd = new OleDbCommand())<br />
{<br />
cmd.Connection = conn;<br />
if (cmbStoredProcedures.SelectedIndex > 0)<br />
{<br />
cmd.CommandType = CommandType.StoredProcedure;<br />
cmd.CommandText = cmbStoredProcedures.GetItemText(cmbStoredProcedures.SelectedItem);<br />
}<br />
else<br />
cmd.CommandText = txtQuery.Text;<br />
<br />
using (OleDbDataAdapter adapter = new OleDbDataAdapter(cmd))<br />
adapter.FillSchema(tbl, SchemaType.Source);<br />
}<br />
}<br />
catch (Exception Ex)<br />
{<br />
MessageBox.Show(Ex.Message);<br />
}<br />
finally<br />
{<br />
if (conn.State == ConnectionState.Open) conn.Close();<br />
}<br />
}<br />
return tbl;<br />
}<br />
My question is this: Is there a better/more efficient way of doing this, or is this really the best way?
Kyosa Jamie Nordmeyer - Taekwondo Yi (2nd) Dan
Portland, Oregon, USA
|
|
|
|
|
Perhaps a slightly more efficient way would be to command.ExecuteReader().GetDataTypeName on each column. But I think it would be hardly distinguishable from your FillSchema. I see no reason to change your existing code.
p.s. for large code blocks, next time use <pre> tags instead of <code> tags.
|
|
|
|
|
Thanks for the ingo, Judah. I think part of my problem is that we use a ton of linked servers here and calls made with OpenQuery, which I'm sure affect the call to FillSchema, since many SQL statements are actually in varchar variables, and executed using exec.
Judah Himango wrote: p.s. for large code blocks, next time use <pre> tags instead of <code> tags.
I always forget about that until it's too late. :->
Kyosa Jamie Nordmeyer - Taekwondo Yi (2nd) Dan
Portland, Oregon, USA
|
|
|
|
|
Hey got a few problems with an auto popup calendar im trying to get working. Here's the deal.
Asp textbox with an Onfocus command jammed in it. When the textbox is clicked on it succesfully calls the Javascript required to set a div's display property to "block". It was previously set to "none". Ok so that bit works fine and the div appears, sat nicely next to the textbox with the calendar controls inside it.
The problem occurs when you click on the calendar to change the date because, of course, this causes a postback, and alas sets the div's display setting back to none.
How can I prevent this from happening??? I only want the calendar to hide when a date is selected.
If you really need to see the code the site is online here http://www.thepinesbroseley.co.uk/Bookings.aspx[^]
Bigup nuff respect
|
|
|
|
|
Any ideas on what functions I need to use to retrieve a handle from an active window and edit that window (drawing, outputting text, etc..) maybe for a game or other form?
Thanks....
|
|
|
|
|
You cannot achieve this with the .NET framework alone; you'll need to P/Invoke some Win32 API calls to get the device context of another window and begin drawing on that. Thus, I recommend you ask this question in the Visual C++ forum; those guys have a better knowledge of what you'll need to do.
|
|
|
|
|
Hey,
just a quickie, is there an actual difference between Model View Controller, and Model View Presenter?
Or are they just the same thing?
Regards
Mark
|
|
|
|
|
They're not quite the same thing. MVP is a fresh take on the old MVC. Perhaps this article[^] will explain better than I can.
|
|
|
|
|
Thanks for the link Judah, I shall have a read.
|
|
|
|
|
I think the main difference is that in MVP there is a greater seperation of view and model. The view and model are exclusive; they have no knowledge of each other in MVP, whereas that is not the case in MVC.
|
|
|
|
|
|
Hi!
This dont seem to work, any ideas? (Im sure you have lots of ideas, but remember Im a newbie)
label1.Text += ".";
string k = label1.Text;
int r;
r = label1.Text.IndexOf(k);
if (r > 0)
{
MessageBox.Show("bla");
}
so, r is never above 0 despite that the string contains a "."
Newbie untill I die!
|
|
|
|
|