+void DecryptString(void * d, const void * s, size_t length, const BLOWFISH_CTX * ctx)
+{
+size_t pos = 0;
+while (pos < length)
+    {
+    DecryptBlock(d + pos, s + pos, ctx);
+    pos += 8;
+    }
+}
+//-----------------------------------------------------------------------------
+void EncryptString(void * d, const void * s, size_t length, const BLOWFISH_CTX * ctx)
+{
+size_t pos = 0;
+while (pos < length)
+    {
+    if (pos + 8 < length)
+        EncryptBlock(d + pos, s + pos, ctx);
+    else
+        {
+        // Short string, use 0-padded buffer.
+        char buf[8];
+        memset(buf, 0, sizeof(buf));
+        memcpy(buf, s + pos, length - pos);
+        EncryptBlock(d + pos, buf, ctx);
+        }
+    pos += 8;
+    }
+}
+//-----------------------------------------------------------------------------