public static HassiumList decryptfilebytes(VirtualMachine vm, HassiumObject self, SourceLocation location, params HassiumObject[] args) { byte[] key = ListToByteArr(vm, location, args[0].ToList(vm, args[0], location)); byte[] iv = ListToByteArr(vm, location, args[1].ToList(vm, args[1], location)); HassiumFile file = args[2] is HassiumFile ? (args[2] as HassiumFile) : new HassiumFile(args[2].ToString(vm, args[2], location).String); byte[] data = (HassiumFile.FileTypeDef.readallbytes(vm, file, location) as HassiumByteArray).Values.ToArray(); return(new HassiumByteArray(decrypt(key, iv, data), new HassiumObject[0])); }
public static HassiumList encryptfilebytes(VirtualMachine vm, HassiumObject self, SourceLocation location, params HassiumObject[] args) { byte[] key = ListToByteArr(vm, location, args[0].ToList(vm, args[0], location)); byte[] iv = ListToByteArr(vm, location, args[1].ToList(vm, args[1], location)); HassiumFile file = args[2] is HassiumFile ? (args[2] as HassiumFile) : new HassiumFile(args[2].ToString(vm, args[2], location).String); using (var memStream = new MemoryStream()) { using (var cryptoStream = new CryptoStream(memStream, new RijndaelManaged().CreateEncryptor(key, iv), CryptoStreamMode.Write)) { while (file.Reader.BaseStream.Position < file.Reader.BaseStream.Length) { byte[] buff = new byte[(byte)(HassiumFile.FileTypeDef.readbyte(vm, file, location) as HassiumChar).Char]; cryptoStream.Write(buff, 0, 1); } } return(new HassiumByteArray(memStream.ToArray(), new HassiumObject[0])); } }