diff -Naurw busybox-1.20.2//include/applets.src.h busybox-1.20.2_new//include/applets.src.h
--- busybox-1.20.2//include/applets.src.h	2012-07-02 10:08:25.000000000 -0400
+++ busybox-1.20.2_new//include/applets.src.h	2012-09-12 21:38:01.194829054 -0400
@@ -409,6 +409,7 @@
 IF_WHICH(APPLET(which, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_WHOAMI(APPLET_NOFORK(whoami, whoami, BB_DIR_USR_BIN, BB_SUID_DROP, whoami))
 IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat))
+IF_XORPIPE(APPLET(xorpipe, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz))
 IF_YES(APPLET_NOFORK(yes, yes, BB_DIR_USR_BIN, BB_SUID_DROP, yes))
 IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat))
diff -Naurw busybox-1.20.2//miscutils/Config.src busybox-1.20.2_new//miscutils/Config.src
--- busybox-1.20.2//miscutils/Config.src	2012-06-26 09:35:45.000000000 -0400
+++ busybox-1.20.2_new//miscutils/Config.src	2012-09-12 21:38:01.194829054 -0400
@@ -610,4 +610,11 @@
 	  certain amount of time, the watchdog device assumes the system has
 	  hung, and will cause the hardware to reboot.
 
+config XORPIPE
+	bool "xorpipe"
+	default y
+	help
+	  Performs a 32-bit XOR on data piped through it, using a key 
+	  specified on the command line.
+
 endmenu
diff -Naurw busybox-1.20.2//miscutils/Kbuild.src busybox-1.20.2_new//miscutils/Kbuild.src
--- busybox-1.20.2//miscutils/Kbuild.src	2012-06-26 09:35:45.000000000 -0400
+++ busybox-1.20.2_new//miscutils/Kbuild.src	2012-09-12 21:38:01.194829054 -0400
@@ -48,3 +48,4 @@
 lib-$(CONFIG_VOLNAME)     += volname.o
 lib-$(CONFIG_WALL)        += wall.o
 lib-$(CONFIG_WATCHDOG)    += watchdog.o
+lib-$(CONFIG_XORPIPE)    += xorpipe.o
diff -Naurw busybox-1.20.2//miscutils/xorpipe.c busybox-1.20.2_new//miscutils/xorpipe.c
--- busybox-1.20.2//miscutils/xorpipe.c	1969-12-31 19:00:00.000000000 -0500
+++ busybox-1.20.2_new//miscutils/xorpipe.c	2012-09-12 22:11:10.868521016 -0400
@@ -0,0 +1,84 @@
+/*
+ * Runs XOR encryption over the input stream using a 32-bit key.
+ * This program is designed to work as part of a pipeline only.
+ *
+ * Released under the GNU GPL version 2 or later by
+ * Jody Bruchon <jody@jodybruchon.com>  (C) 2012
+ */
+
+#include "libbb.h"
+
+//usage:#define xorpipe_trivial_usage
+//usage:	"-g or 8-char hex key\n"
+//usage:#define xorpipe_full_usage
+//usage:	"XORs the input stream by a 32-bit key, or generates a random key.\n"
+//usage:	"xorpipe 1234abcd\t32-bit (8-character) hexadecimal key to use\n"
+//usage:	"xorpipe -g\t\tPrint a randomly generated key (useful for scripts)\n"
+//usage:	"Example: tar -c * | lzop -1 | xorpipe c4fde31s > ../archive.tar.lzo.enc"
+//usage:#define xorpipe_example_usage
+//usage:	"tar -c * | lzop -1 | xorpipe c4fde31s > ../archive.tar.lzo.enc"
+
+int xorpipe_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int xorpipe_main(int argc, char **argv)
+{
+	uint32_t key = 0;
+	char *q = (char *)argv[1] + 7;
+	unsigned char *buf;
+	unsigned int i, ctr;
+	uint32_t *ibuf;
+	int bufsize = 65536;
+
+	if(argc == 2 && (strcmp(argv[1], "-g") == 0))
+	{
+		srand((unsigned int)time(NULL) ^ 0xdeadbeef);
+		i = 0;
+		while(i == 0) i = rand();
+		printf("%x\n", i);
+		return 0;
+	}
+
+	if((argc < 2) || (strlen(argv[1]) != 8)) bb_show_usage();
+
+	/* Convert 8 lowercase hex characters to a 32-bit integer key */
+	for(ctr = 0; ctr < 8; ctr++)
+	{
+		if(!((*q < 0x3a && *q > 0x2f) || (*q < 0x67 && *q > 0x60)))
+		{
+			fprintf(stderr, "Only characters 0-9, a-f are valid.\n");
+			return 1;
+		}
+		if(*q < 0x3a) *q -= 0x30;  /* 0-9 */
+		if(*q > 0x60) *q -= 0x57;  /* a-f */
+		key += (*q << (ctr * 4));
+		q--;
+	}
+
+	if(key == 0)
+	{
+		fprintf(stderr, "The key must be greater than zero.\n");
+		exit(1);
+	}
+
+	buf = xmalloc(bufsize*sizeof(char));
+	i = 1;
+	while(i > 0)
+	{
+		i = fread(buf, 1, bufsize, stdin);
+		ibuf = (uint32_t *)buf;
+		for(ctr = 1; ctr < bufsize; ctr += sizeof(int))
+		{
+			*ibuf ^= key;
+			ibuf++;
+		}
+                if (i > 0)
+                {
+                        if(fwrite(buf, 1, i, stdout) < i)
+                        {
+                                fprintf(stderr, "xorpipe: error writing to output\n");
+                                exit(1);
+                        }
+                }
+
+	}
+	return 0;
+}
