Avatar billede ahlforn Nybegynder
24. marts 2004 - 14:28 Der er 7 kommentarer og
1 løsning

Datatyper imellem classic ASP og WebServices

Jeg er ved at lave en WebService til kryptering, da jeg skal bruge den sammen krypteringsfunktion på en classic ASP side og en ASP.Net side. Her er lidt kode:

using System.Security.Cryptography;
using System.Text;

private TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();

[WebMethod]
public string encode(string thisEncode)
{           
    string encrypted;
    byte[] Code = ASCIIEncoding.ASCII.GetBytes(thisEncode);

    encrypted = Convert.ToBase64String(des.CreateEncryptor().TransformFinalBlock(Code, 0, Code.Length));

    return encrypted;
}

[WebMethod]
public string decode(string thisDecode)
{
    string decrypted;
    byte[] Code = Convert.FromBase64String(thisDecode);

    decrypted = ASCIIEncoding.ASCII.GetString(des.CreateDecryptor().TransformFinalBlock(Code, 0, Code.Length));

    return decrypted;
}

Så har jeg oprettet en ASP side til lige at teste det med:

Dim oSOAP
Set oSOAP = Server.CreateObject("MSSOAP.SoapClient")
oSOAP.ClientProperty("ServerHTTPRequest") = true
oSOAP.mssoapinit("*******Adresse til webservicen******")

text = "Hello World"

encrypted = oSOAP.encode(text)
response.Write(encrypted)

response.Write("<br>")

decrypted = oSOAP.decode(encrypted)
response.Write(decrypted)

Problemet består i at jeg sagtens kan bruger encode() metoden. Men så snart den kommer til decode() metoden, så melder den følgende:

Server was unable to process request. --> Bad Data

Jeg har lavet og testet de to metoder i en console application, så jeg er sikker på at de virker. Men når jeg flytter dem over i min webservice virker det ikke længere. Kan det være noget med den string jeg får fra ASP koden der ikke er rigtigt format eller noget i den stil?

Jeg håber der er en der lige sidder med svaret :)
Avatar billede arne_v Ekspert
24. marts 2004 - 21:40 #1
1)  Hvorfor ASCIIEncoding og ike UTF8Encoding ?  (du må da få ÆØÅ problemer)

2)  Du skal nok have sat noget debug print ind for at trace hvad der
    foregår så du kan hvor det går galt
Avatar billede ahlforn Nybegynder
25. marts 2004 - 08:58 #2
Tak for tippet om UTF8Encoding.

Jeg ved at det er i linien

decrypted = ASCIIEncoding.ASCII.GetString(des.CreateDecryptor().TransformFinalBlock(Code, 0, Code.Length));

i decode() metoden den går galt. Webservicen returnerer "Server was unable to process request. --> Bad Data" i den linie.
Avatar billede arne_v Ekspert
25. marts 2004 - 21:22 #3
Selvom det er der fejlen sker, så kan det vel alligevel gå galt flere steder:

streng modtagelse
streng -> byte array
dekrypering
byte array -> streng

Hvis du ved præcis hvad der sker, så er det måske nemt at rette.
Avatar billede arne_v Ekspert
25. marts 2004 - 21:30 #4
Forslag:

Prøv og sæt key:

des.Key = ASCIIEncoding.ASCII.GetBytes("hemmelige16chars");

i både encode og decode og se om det så virker !
Avatar billede ahlforn Nybegynder
25. marts 2004 - 22:01 #5
Jeg har fået det til at virke :) Jeg har fået det til at virke nu. TripleDESCryptoServiceProvider objektet huskede ikke på den key den havde genereret selvom encode og decode blev kørt lige efter hinanden, så jeg sætter bare key og iv i to parametre til metoderne. Så nu virker det.

Smid et svar og du skal få dine points :)
Avatar billede arne_v Ekspert
25. marts 2004 - 22:09 #6
svar
Avatar billede arne_v Ekspert
25. marts 2004 - 22:11 #7
Min hypotese er at den husker udmærket, men at de 2 web service kald
er blivet serviceret af 2 forskellige instanser af klassen.

Hypotesen kunne testes ved at erklæres des static og se om det så virker.

Men under alle omstændigheder synes jeg at det er pænest at sætte
key eksplicit (keyen overlever ihvertfald ikke en genstart).
Avatar billede ahlforn Nybegynder
25. marts 2004 - 23:18 #8
Jeg ville da bare mene at når man starte en instans af webservicen i ASP koden, og kalder de to metoder lige efter hinanden, så blev det regnet for én instans. Og da des er erklæret globalt, så burde den jo ikke "tabe" key-værdien.

Men jeg har nok bare gjort det forkert.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester