Hello Everyone!
My problem is this. I have a VBscript encrypting passwords using capicom.dll RC2. I want to use C# to decrypt this password. Which I can't get to work for the life of me. Keeps coming back saying 'Specified key is not a valid size for this algorithm.'
(but i can decrypt in vbscript without an issue! >.<)
Below is how I encrypt the data and how I'm trying to decrypt the data in C#
classic ASP/VBscript Code
ENCRYPT
Function AESEncrypt(ByVal String)
if isnull(String) or String="" then
AESEncrypt=""
else
set fs=Server.CreateObject("Scripting.FileSystemObject")
path=fs.GetAbsolutePathName("c:\test.txt")
if fs.FileExists(path) then
On Error Resume Next
Err.Clear
set f=fs.OpenTextFile("c:\test.txt",1)
KeyLine=f.ReadLine
f.Close
Set f = Nothing
if Err.Number<>0 then
Response.Write("Configuration Error 308.3: unable to read encryption file")
Response.End
end if
Err.Clear
Set Ce=CreateObject("CAPICOM.EncryptedData")
Ce.Content=String
Ce.SetSecret(KeyLine)
AESEncrypt=Ce.Encrypt
Set Ce = Nothing ' Clear from memory
if Err.Number<>0 then
Response.Write("Configuration Error 308.31: password encryption error")
Response.End
end if
else
Response.Write("Configuration Error 308.4: encryption file does not exist")
Response.End
end if
Set fs = Nothing
end if
End Function
DECRYPT
Function AESDecrypt(ByVal String)
if isnull(String) or String="" then
AESDecrypt=""
else
set fs=Server.CreateObject("Scripting.FileSystemObject")
path=fs.GetAbsolutePathName("c:\test.txt")
if fs.FileExists(path) then
On Error Resume Next
Err.Clear
set f=fs.OpenTextFile("c:\test.txt",1)
KeyLine=f.ReadLine
f.Close
Set f = Nothing
if Err.Number<>0 then
Response.Write("Configuration Error 308.5: unable to read encryption file")
Response.End
end if
Err.Clear
Set Cd=CreateObject("CAPICOM.EncryptedData")
Cd.SetSecret(KeyLine)
Cd.Decrypt(String)
AESDecrypt=Cd.Content
Set Cd = Nothing ' Clear from memory
if Err.Number<>0 then
Response.Write("Configuration Error 308.51: password decryption error")
Response.End
end if
else
Response.Write("Configuration Error 308.6: encryption file does not exist")
Response.End
end if
Set fs = Nothing
end if
End Function
The C# Code
public string DecryptAES(string strInput)
{
StreamReader reader = new StreamReader("C:\\test.txt");
string strKey = reader.ReadLine();
reader.Close(); reader.Dispose();//close/remove
byte[] byteInput = Encoding.ASCII.GetBytes(strInput);
byte[] byteKey = Encoding.ASCII.GetBytes(strKey);
MemoryStream MS = new MemoryStream();
RC2CryptoServiceProvider RC2 = new RC2CryptoServiceProvider();
CryptoStream CS = new CryptoStream(MS, RC2.CreateDecryptor(byteKey, RC2.IV), CryptoStreamMode.Write);
CS.Write(byteInput, 0, byteInput.Length);
CS.FlushFinalBlock();
return Encoding.UTF8.GetString(MS.ToArray());
}
Any pointers or help would be great, I've tried so many things, which I don't even know where to start if i would list them all haha.