+ let key_as_bytes = base64::decode(key).expect("Unable to decode base64 encoded key");\r
+ assert!(key_as_bytes.len() == 16);\r
+\r
+ let text_as_bytes = plain_text.as_bytes();\r
+\r
+ let iv = rand::thread_rng().gen::<[u8; 16]>();\r
+\r
+ let cipher_text =\r
+ symm::encrypt(symm::Cipher::aes_128_cbc(), &key_as_bytes, Some(&iv), text_as_bytes)\r
+ .expect("Unable to encrypt message");\r
+\r
+ let hash_text = sha256(&text_as_bytes);\r
+\r
+ let mut result: Vec<u8> = Vec::new();\r
+ result.extend(&iv);\r
+ result.extend(&hash_text);\r
+ result.extend(&cipher_text);\r
+\r
+ String::from("1") + &base64::encode(&result)\r