@ -5,14 +5,15 @@ namespace AOLBackend.Services.Tools
{
{
public class CryptDecrypt
public class CryptDecrypt
{
{
private readonly static string key = "G3mc0H42hk3y2!0$2*2#n4813dc2h47p" ;
private readonly static string keyString = "G3mc0H42hk3y2!0$2*2#n4813dc2h47p" ;
private readonly static int BlockSize = 1 2 8 ;
public static string Encrypt ( string text )
public static string Encrypt ( string text )
{
{
byte [ ] iv = new byte [ 1 6 ] ;
byte [ ] iv = new byte [ 1 6 ] ;
byte [ ] array ;
byte [ ] array ;
using ( Aes aes = Aes . Create ( ) )
using ( Aes aes = Aes . Create ( ) )
{
{
aes . Key = Encoding . UTF8 . GetBytes ( key ) ;
aes . Key = Encoding . UTF8 . GetBytes ( keyString ) ;
aes . IV = iv ;
aes . IV = iv ;
ICryptoTransform encrypt = aes . CreateEncryptor ( aes . Key , aes . IV ) ;
ICryptoTransform encrypt = aes . CreateEncryptor ( aes . Key , aes . IV ) ;
using ( MemoryStream ms = new MemoryStream ( ) )
using ( MemoryStream ms = new MemoryStream ( ) )
@ -36,7 +37,7 @@ namespace AOLBackend.Services.Tools
byte [ ] buffer = Convert . FromBase64String ( text ) ;
byte [ ] buffer = Convert . FromBase64String ( text ) ;
using ( Aes aes = Aes . Create ( ) )
using ( Aes aes = Aes . Create ( ) )
{
{
aes . Key = Encoding . UTF8 . GetBytes ( key ) ;
aes . Key = Encoding . UTF8 . GetBytes ( keyString ) ;
aes . IV = iv ;
aes . IV = iv ;
ICryptoTransform decryptor = aes . CreateDecryptor ( aes . Key , aes . IV ) ;
ICryptoTransform decryptor = aes . CreateDecryptor ( aes . Key , aes . IV ) ;
using ( MemoryStream ms = new MemoryStream ( buffer ) )
using ( MemoryStream ms = new MemoryStream ( buffer ) )
@ -51,5 +52,176 @@ namespace AOLBackend.Services.Tools
}
}
}
}
}
}
/ * public static string EncryptString ( string text )
{
var key = Encoding . UTF8 . GetBytes ( keyString ) ;
using ( var aesAlg = Aes . Create ( ) )
{
using ( var encryptor = aesAlg . CreateEncryptor ( key , aesAlg . IV ) )
{
using ( var msEncrypt = new MemoryStream ( ) )
{
using ( var csEncrypt = new CryptoStream ( msEncrypt , encryptor , CryptoStreamMode . Write ) )
using ( var swEncrypt = new StreamWriter ( csEncrypt ) ) { swEncrypt . Write ( text ) ; }
var iv = aesAlg . IV ;
var decryptedContent = msEncrypt . ToArray ( ) ;
var result = new byte [ iv . Length + decryptedContent . Length ] ;
Buffer . BlockCopy ( iv , 0 , result , 0 , iv . Length ) ;
Buffer . BlockCopy ( decryptedContent , 0 , result , iv . Length , decryptedContent . Length ) ;
msEncrypt . Flush ( ) ;
msEncrypt . Close ( ) ;
return Convert . ToBase64String ( result ) ;
}
}
}
}
public static string DecryptString ( string cipherText )
{
var fullCipher = Convert . FromBase64String ( cipherText ) ;
var iv = new byte [ 1 6 ] ;
var cipher = new byte [ 1 6 ] ;
Buffer . BlockCopy ( fullCipher , 0 , iv , 0 , iv . Length ) ;
Buffer . BlockCopy ( fullCipher , iv . Length , cipher , 0 , iv . Length ) ;
var key = Encoding . UTF8 . GetBytes ( keyString ) ;
using ( var aesAlg = Aes . Create ( ) )
{
using ( var decryptor = aesAlg . CreateDecryptor ( key , iv ) )
{
string result ;
using ( var msDecrypt = new MemoryStream ( cipher ) )
{
using ( var csDecrypt = new CryptoStream ( msDecrypt , decryptor , CryptoStreamMode . Read ) )
{
using ( var srDecrypt = new StreamReader ( csDecrypt ) )
{
result = srDecrypt . ReadToEnd ( ) ;
}
}
}
return result ;
}
}
}
private static char Cipher ( char ch , int key )
{
if ( ! char . IsLetter ( ch ) )
return ch ;
char offset = char . IsUpper ( ch ) ? 'A' : 'a' ;
return ( char ) ( ( ( ( ch + key ) - offset ) % 2 6 ) + offset ) ;
}
public static string Encipher ( string input , int key )
{
string output = string . Empty ;
foreach ( char ch in input )
output + = Cipher ( ch , key ) ;
return output ;
}
public static string Decipher ( string input , int key )
{
return Encipher ( input , 2 6 - key ) ;
}
static public byte [ ] Encryption ( byte [ ] Data , bool DoOAEPPadding )
{
try
{
byte [ ] encryptedData ;
using ( RSACryptoServiceProvider RSA = new RSACryptoServiceProvider ( ) )
{
RSA . ImportParameters ( RSA . ExportParameters ( false ) ) ;
encryptedData = RSA . Encrypt ( Data , DoOAEPPadding ) ;
}
return encryptedData ;
}
catch ( CryptographicException e )
{
Console . WriteLine ( e . Message ) ;
return null ;
}
}
static public byte [ ] Decryption ( byte [ ] Data , bool DoOAEPPadding )
{
try
{
byte [ ] decryptedData ;
using ( RSACryptoServiceProvider RSA = new RSACryptoServiceProvider ( ) )
{
RSA . ImportParameters ( RSA . ExportParameters ( true ) ) ;
decryptedData = RSA . Decrypt ( Data , DoOAEPPadding ) ;
}
return decryptedData ;
}
catch ( CryptographicException e )
{
Console . WriteLine ( e . ToString ( ) ) ;
return null ;
}
}
}
* /
public static string Encryption ( string strText )
{
var publicKey = "<RSAKeyValue><Modulus>21wEnTU+mcD2w0Lfo1Gv4rtcSWsQJQTNa6gio05AOkV/Er9w3Y13Ddo5wGtjJ19402S71HUeN0vbKILLJdRSES5MHSdJPSVrOqdrll/vLXxDxWs/U0UT1c8u6k/Ogx9hTtZxYwoeYqdhDblof3E75d9n2F0Zvf6iTb4cI7j6fMs=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>" ;
var testData = Encoding . UTF8 . GetBytes ( strText ) ;
using ( var rsa = new RSACryptoServiceProvider ( 1 0 2 4 ) )
{
try
{
// client encrypting data with public key issued by server
rsa . FromXmlString ( publicKey . ToString ( ) ) ;
var encryptedData = rsa . Encrypt ( testData , true ) ;
var base64Encrypted = Convert . ToBase64String ( encryptedData ) ;
return base64Encrypted ;
}
finally
{
rsa . PersistKeyInCsp = false ;
}
}
}
public static string Decryption ( string strText )
{
var privateKey = "<RSAKeyValue><Modulus>21wEnTU+mcD2w0Lfo1Gv4rtcSWsQJQTNa6gio05AOkV/Er9w3Y13Ddo5wGtjJ19402S71HUeN0vbKILLJdRSES5MHSdJPSVrOqdrll/vLXxDxWs/U0UT1c8u6k/Ogx9hTtZxYwoeYqdhDblof3E75d9n2F0Zvf6iTb4cI7j6fMs=</Modulus><Exponent>AQAB</Exponent><P>/aULPE6jd5IkwtWXmReyMUhmI/nfwfkQSyl7tsg2PKdpcxk4mpPZUdEQhHQLvE84w2DhTyYkPHCtq/mMKE3MHw==</P><Q>3WV46X9Arg2l9cxb67KVlNVXyCqc/w+LWt/tbhLJvV2xCF/0rWKPsBJ9MC6cquaqNPxWWEav8RAVbmmGrJt51Q==</Q><DP>8TuZFgBMpBoQcGUoS2goB4st6aVq1FcG0hVgHhUI0GMAfYFNPmbDV3cY2IBt8Oj/uYJYhyhlaj5YTqmGTYbATQ==</DP><DQ>FIoVbZQgrAUYIHWVEYi/187zFd7eMct/Yi7kGBImJStMATrluDAspGkStCWe4zwDDmdam1XzfKnBUzz3AYxrAQ==</DQ><InverseQ>QPU3Tmt8nznSgYZ+5jUo9E0SfjiTu435ihANiHqqjasaUNvOHKumqzuBZ8NRtkUhS6dsOEb8A2ODvy7KswUxyA==</InverseQ><D>cgoRoAUpSVfHMdYXW9nA3dfX75dIamZnwPtFHq80ttagbIe4ToYYCcyUz5NElhiNQSESgS5uCgNWqWXt5PnPu4XmCXx6utco1UVH8HGLahzbAnSy6Cj3iUIQ7Gj+9gQ7PkC434HTtHazmxVgIR5l56ZjoQ8yGNCPZnsdYEmhJWk=</D></RSAKeyValue>" ;
var testData = Encoding . UTF8 . GetBytes ( strText ) ;
using ( var rsa = new RSACryptoServiceProvider ( 1 0 2 4 ) )
{
try
{
var base64Encrypted = strText ;
// server decrypting data with private key
rsa . FromXmlString ( privateKey ) ;
var resultBytes = Convert . FromBase64String ( base64Encrypted ) ;
var decryptedBytes = rsa . Decrypt ( resultBytes , true ) ;
var decryptedData = Encoding . UTF8 . GetString ( decryptedBytes ) ;
return decryptedData . ToString ( ) ;
}
finally
{
rsa . PersistKeyInCsp = false ;
}
}
}
}
}
}