Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn main() {
- println!("{}", encrypt("Hello, world!".to_string(), "password".to_string()));
- }
- struct KeyIter {
- key: Vec<u8>,
- index: usize,
- }
- impl KeyIter {
- pub fn new(key: Vec<u8>) -> KeyIter {
- KeyIter {
- key,
- index: 0,
- }
- }
- pub fn next(&mut self) -> u8 {
- let k = self.key[self.index];
- self.index += 1;
- if self.index == self.key.len() {
- self.index = 0;
- }
- k
- }
- }
- fn encrypt(msg: String, key: String) -> String {
- let msg: Vec<u8> = msg.into_bytes();
- let key: Vec<u8> = key.into_bytes();
- let mut encrypted: Vec<u8> = vec!();
- let mut key_iter: KeyIter = KeyIter::new(key);
- for b in msg.iter() {
- let k = key_iter.next();
- if k > *b {
- encrypted.push(*b^k); // b xor k
- } else {
- encrypted.push(b-k);
- }
- }
- encrypted
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement