Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kde se koná výstava fotografií Luďka Vojtěchovského?

V dnešní soutěži hrajeme o:



Problém při decryptovíní RSA (private/public key) tokenu - MVC Web Api REST

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Problém při decryptovíní RSA (private/public key) tokenu - MVC Web Api REST

Autor: Sandak ♂

23:24:41 13.11.2013

Ahoj,
mám na serveru aspone.cz účet. Pracuji na MVC aplikaci Web Api - REST.
Pro authentifikaci uzivatelu pozivam jednoduchou metodu, kde uzivatel zazada o token, v hlavicce posle jmeno:heslo server vystavy zasifrovany token a uzivatel se pozdeji prokazuj pouze pres tento token.
Na localhostu vse funguje naprosto v poradku bez chybicky, bohuzel na serveru to ne a ne rozjet. Vystaveni encryptovaneho tokenu funguje skvele (tedy metoda encrypt s verejnym klicem ok), vrati mi to v hlavicce token, ktery potom pouziju. Bohuzel ve fazi kdy chci aby server mnou zaslany token decryptoval (a posleze authoarizoval uzivatele) nastane chyba a to presne ve chvily kdy se snazim do RSACryptoServiceProvider nahrat privateKey pro decryptovani. Z mnou nepochopitelnych duvodu na serveru to v tomto miste pada.
Zkousel jsem ruzne zmeny:
1) nejprve sem projekt delal v asp.net 4.5, jenze free ucet na aspone jede jen na 4.0 - i tak by melo fungovat, proto sem stejne predelal do asp.net 4.0 a vysledek zadny
2) vyzkousel jsem jeden oficialni tutorial na strankach MS:
http://msdn.microsoft.com/cs-cz/library/system.security.cryptography.rsacryptoserviceprovider(v=vs.110).aspx
a pak dalsi dva ze stackoverflow ktere se lisily jen v malickostech:
http://stackoverflow.com/questions/11986974/how-to-do-role-based-authorization-for-asp-net-mvc-4-web-api
a
http://stackoverflow.com/questions/17128038/c-sharp-rsa-encryption-decryption-with-transmission?answertab=votes#tab-top


Nahodim sem jednu z mych verzi tridy RSAHelper (na cistotu kodu se moc nedivejte, je to spatlane protoze se snazim resit problem)

Kód:
public class RSAHelper
{
private static string _privateKey = "<?xml version=\\"1.0\\" encoding=\\"utf-16\\"?>\\r\\n<RSAParameters xmlns:xsi=\\"http://www.w3.org/2001/XMLSchema-instance\\" xmlns:xsd=\\"http://www.w3.org/2001/XMLSchema\\">\\r\\n <Exponent>AQAB</Exponent>\\r\\n <Modulus>rrEAoxIBFkfvoLr8vvT2Z3CKHKtpXiAPIYKbgtiP/B8YAOhDo1W3dD4MKX05eXn0jFifXBoy2WbGTacE88NocXoSUWVH4a7d3Bm4hfeNawfSSHEpkO0xryU6xF0PdfqO+Vc6y9gajYugUkAdougqaall4TwjsfZ/XUVl6GkTOws=</Modulus>\\r\\n <P>zDkpvahctB77Hx/4W1Yfp5rCC3B7rL9CHvf+L1rQdEgooK2NI4Nz6uTixgTTmyRSLRdGLIZRAjAUVFNdYaIbCw==</P>\\r\\n <Q>2vsc41/NtLKoCwUtuXyvx4o0c3/RNVLws3VpQ2Ct+2kHt15siO9IwCTTQPgbUi52e8cbh7w3wwWoLwsugAdgAQ==</Q>\\r\\n <DP>DcOYhZjQTq9721grQ/SlA4XRqDW3kCf/y9iJACYNwJiQbGvmBEu6x00P36q5nE4xX6qe5ydSVGRrKlfIBmmHiw==</DP>\\r\\n <DQ>uhlOo613lGmAhl0QTuK4QEwj50Ro93hVNy5BFxHCyjaoaB3G/1jb6u9g2YYBMgZqiybbLq+2c/cKx3ApRIUAAQ==</DQ>\\r\\n <InverseQ>H0BA/DVxNa/JukiqHYe+xuYtblCL04o7pCoAvx/5BFBqHAFOP8Vg0R16WNNoABUGDRTYe7AkWUAquqW9uVWaLw==</InverseQ>\\r\\n <D>LGyCtvVrJVlhzMQAZicxShjKZoQIpZENh/4IwfuEkh7uIbzvBmhT4NGukhZwOT4UPGSFEgzvhW2nXDPvBHZa5qT/JknF0juT/B6goa+suMjYupAYk/8oIJuF8ez9MWQ1Blouc+/6Gxoh8tRsRpixoRXbX0kUrz8DdEgjSxp8gAE=</D>\\r\\n</RSAParameters>";

private static string _publicKey = "<?xml version=\\"1.0\\" encoding=\\"utf-16\\"?>\\r\\n<RSAParameters xmlns:xsi=\\"http://www.w3.org/2001/XMLSchema-instance\\" xmlns:xsd=\\"http://www.w3.org/2001/XMLSchema\\">\\r\\n <Exponent>AQAB</Exponent>\\r\\n <Modulus>rrEAoxIBFkfvoLr8vvT2Z3CKHKtpXiAPIYKbgtiP/B8YAOhDo1W3dD4MKX05eXn0jFifXBoy2WbGTacE88NocXoSUWVH4a7d3Bm4hfeNawfSSHEpkO0xryU6xF0PdfqO+Vc6y9gajYugUkAdougqaall4TwjsfZ/XUVl6GkTOws=</Modulus>\\r\\n</RSAParameters>";

private static UnicodeEncoding _encoder = new UnicodeEncoding();


public static string Decrypt(string data)
{
try
{
var bytesCypherText = Convert.FromBase64String(data);

//rsa.FromXmlString(_privateKey);
//get a stream from the string
var sr = new System.IO.StringReader(_privateKey);
//we need a deserializer
var xs = new System.Xml.Serialization.XmlSerializer(typeof(RSAParameters));
//get the object back from the stream
var privKey = (RSAParameters)xs.Deserialize(sr);
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(privKey); //--------------------------------------------------------------zde se to zastavi
var bytesPlainTextData = rsa.Decrypt(bytesCypherText, false);

//get our original plainText back...
var plainTextData = System.Text.Encoding.Unicode.GetString(bytesPlainTextData);
return plainTextData;
}
catch (Exception)
{
throw new RSAException();
}
}

public static string Encrypt(string data) // zato metoda snad OK
{
try
{
var rsa = new RSACryptoServiceProvider();
//rsa.FromXmlString(_publicKey);
//get a stream from the string
var sr = new System.IO.StringReader(_publicKey);
//we need a deserializer
var xs = new System.Xml.Serialization.XmlSerializer(typeof(RSAParameters));
//get the object back from the stream
var pubKey = (RSAParameters)xs.Deserialize(sr);
rsa.ImportParameters(pubKey);
var dataToEncrypt = System.Text.Encoding.Unicode.GetBytes(data);
var bytesCypherText = rsa.Encrypt(dataToEncrypt, false);
return Convert.ToBase64String(bytesCypherText);

}
catch (Exception ex)
{
throw new RSAException();
}
}


Budu nesmirne vdecny za kazdou radu co s tim. Predem vsem moc děkuji. Resim to jiz nekolikaty den a zatim bez vysledku :(

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: