Last active
August 29, 2015 13:55
-
-
Save corytodd/8726512 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
internal static string Decrypt(byte[] key,string input) | |
{ | |
if (input == null || input.Length <= 0) | |
throw new ArgumentNullException("input"); | |
if (key == null || key.Length <= 0) | |
throw new ArgumentNullException("Key"); | |
var un64byte = Convert.FromBase64String(input); | |
if (un64byte.Length < 16) | |
return ""; // Too short | |
//Pluck out the IV bytes (first 16 bytes) | |
var IV = un64byte.Take(16).ToArray(); | |
//All that remains is the actual data | |
var cipherText = un64byte.Skip(16).Take(un64byte.Length - 16).ToArray(); | |
using (RijndaelManaged aes = new RijndaelManaged()) | |
{ | |
aes.Key = Key; | |
aes.IV = IV; | |
aes.Mode = CipherMode.CBC; | |
//!!!Note that you have to have knowledge of the original length to strip padding | |
aes.Padding = PaddingMode.Zeros; | |
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV); | |
string plaintext = ""; | |
using (MemoryStream msDecrypt = new MemoryStream(cipherText)) | |
{ | |
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) | |
{ | |
using (StreamReader srDecrypt = new StreamReader(csDecrypt)) | |
{ | |
plaintext = srDecrypt.ReadToEnd(); | |
} | |
} | |
} | |
} | |
return plaintext; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func encrypt(key []byte, text string) string { | |
blockSize := aes.BlockSize | |
if len(text)%blockSize != 0 { | |
text += strings.Repeat("0", blockSize-len(text)%blockSize) | |
} | |
plaintext := []byte(text) | |
block, err := aes.NewCipher(key) | |
if err != nil { | |
panic(err) | |
} | |
ciphertext := make([]byte, aes.BlockSize+len(plaintext)) | |
iv := ciphertext[:aes.BlockSize] | |
if _, err := io.ReadFull(rand.Reader, iv); err != nil { | |
panic(err) | |
} | |
mode := cipher.NewCBCEncrypter(block, iv) | |
mode.CryptBlocks(ciphertext[aes.BlockSize:], plaintext) | |
return base64.StdEncoding.EncodeToString(ciphertext) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment