Skip to content

Instantly share code, notes, and snippets.

@ShekharReddy4
Forked from sandromello/C implementation
Created August 10, 2017 11:41
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ShekharReddy4/355c4284e00d4532fe030094f583ff79 to your computer and use it in GitHub Desktop.
Save ShekharReddy4/355c4284e00d4532fe030094f583ff79 to your computer and use it in GitHub Desktop.
MD5 and TripleDES - C# and Python implementation
using System.Security.Cryptography;
class Program
{
static void Main(string[] args)
{
var privatekey = "RN4nog0661VvjzphNg48372t747365mNfSxirueSDYstqsqeQn?=";
var skey = "e99308c2e3373fb041775a0c813f397d";
var c = new Program();
var encrypted = c.crypto(skey, privatekey, "encrypt");
Console.WriteLine("ENCRYPTED: {0}", encrypted);
var decrypted = c.crypto(encrypted, privatekey, "decrypt");
Console.WriteLine("DECRYPTED: {0}", decrypted);
}
public string crypto(string sk, string privatekey, string type)
{
byte[] results;
System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
MD5CryptoServiceProvider hashProvider = new MD5CryptoServiceProvider();
byte[] tdeskey = hashProvider.ComputeHash(UTF8.GetBytes(privatekey));
TripleDESCryptoServiceProvider tripDES = new TripleDESCryptoServiceProvider();
tripDES.Key = tdeskey;
tripDES.Mode = CipherMode.ECB;
tripDES.Padding = PaddingMode.PKCS7;
byte[] data = null;
ICryptoTransform enc = null;
switch (type)
{
case "encrypt":
enc = tripDES.CreateEncryptor();
data = UTF8.GetBytes(sk);
break;
case "decrypt":
enc = tripDES.CreateDecryptor();
data = Convert.FromBase64String(sk);
break;
}
try
{
results = enc.TransformFinalBlock(data, 0, data.Length);
}
finally
{
tripDES.Clear();
hashProvider.Clear();
}
if (type == "decrypt")
return UTF8.GetString(results);
else
return Convert.ToBase64String(results);
}
}
class Program
{
static void Main(string[] args)
{
var privatekey = "RN4nog0661VvjzphNg48372t747365mNfSxirueSDYstqsqeQn?=";
var skey = "e99308c2e3373fb041775a0c813f397d";
var c = new Program();
var encrypted = c.crypto(skey, privatekey, "encrypt");
Console.WriteLine("ENCRYPTED: {0}", encrypted);
var decrypted = c.crypto(encrypted, privatekey, "decrypt");
Console.WriteLine("DECRYPTED: {0}", decrypted);
}
public string crypto(string sk, string privatekey, string type)
{
byte[] results;
System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
MD5CryptoServiceProvider hashProvider = new MD5CryptoServiceProvider();
byte[] tdeskey = hashProvider.ComputeHash(UTF8.GetBytes(privatekey));
TripleDESCryptoServiceProvider tripDES = new TripleDESCryptoServiceProvider();
tripDES.Key = tdeskey;
tripDES.Mode = CipherMode.ECB;
tripDES.Padding = PaddingMode.PKCS7;
byte[] data = null;
ICryptoTransform enc = null;
switch (type)
{
case "encrypt":
enc = tripDES.CreateEncryptor();
data = UTF8.GetBytes(sk);
break;
case "decrypt":
enc = tripDES.CreateDecryptor();
data = Convert.FromBase64String(sk);
break;
}
try
{
results = enc.TransformFinalBlock(data, 0, data.Length);
}
finally
{
tripDES.Clear();
hashProvider.Clear();
}
if (type == "decrypt")
return UTF8.GetString(results);
else
return Convert.ToBase64String(results);
}
}
from Crypto.Cipher import DES3
import hashlib
privatekey = "RN4nog0661VvjzphNg48372t747365mNfSxirueSDYstqsqeQn?="
skey = "e99308c2e3373fb041775a0c813f397d"
BS = DES3.block_size
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
unpad = lambda s : s[0:-ord(s[-1])]
m = hashlib.md5()
m.update(privatekey)
cipher = DES3.new(m.digest())
enc = cipher.encrypt(pad(skey))
dec = unpad(cipher.decrypt(enc))
print 'ENCRYPTED: {0}',enc.encode('base64')
print 'DECRYPTED: {0}',dec
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment