I'm receiving a file encrypted with TripleDES by a .Net process.
The code they are using is:
class TripleDES
{
private static System.Security.Cryptography.TripleDES CreateDES(string key)
{
MD5 md5 = new MD5CryptoServiceProvider();
System.Security.Cryptography.TripleDES des = new TripleDESCryptoServiceProvider();
des.Key = md5.ComputeHash(Encoding.UTF8.GetBytes(key));
des.IV = new byte[des.BlockSize/8];
return des;
}
public static byte[] Encryption(string PlainText, string key)
{
var des = CreateDES(key);
var ct = des.CreateEncryptor();
var input = Encoding.UTF8.GetBytes(PlainText);
return ct.TransformFinalBlock(input, 0, input.Length);
}
}
I've tried decrypting (with no success) using this:
// key used to encrypt == "shfTbs.set" --> not padded to 8 bytes?
func decryptIt(cryptoBytes []byte, key string) {
triplekey := []byte(GetMD5Hash(key)) // "shfTbs.set"
block, err := des.NewTripleDESCipher(triplekey)
if err != nil {
fmt.Printf("%s \n", err.Error())
os.Exit(1)
}
iv := triplekey[:des.BlockSize]
decrypter := cipher.NewCBCDecrypter(block, iv)
decrypted := make([]byte, len(cryptoBytes))
decrypter.CryptBlocks(decrypted, encrypted)
fmt.Printf("%s", decrypted) <-- Nope, doesn't successfully decrypt
}
func GetMD5Hash(text string) string {
hasher := md5.New()
hasher.Write([]byte(text))
return hex.EncodeToString(hasher.Sum(nil))
}
Any help would be greatly appreciated!