diff --git a/lib/modules/Crypto/randomness.pmod.pike b/lib/modules/Crypto/randomness.pmod.pike
index 7a9d4d8d10241686d2a03b0d1cc8e31d9b6ccba3..dc77256a20219a27587e698efca19dcc7adb452a 100644
--- a/lib/modules/Crypto/randomness.pmod.pike
+++ b/lib/modules/Crypto/randomness.pmod.pike
@@ -105,7 +105,7 @@ object reasonably_random()
 
 object really_random(int|void may_block)
 {
-  object res;
+  object res = Stdio.File();
   if (may_block && file_stat(RANDOM_DEVICE))
   {
     if (res->open(RANDOM_DEVICE, "r"))
diff --git a/lib/modules/Crypto/rsa.pike b/lib/modules/Crypto/rsa.pike
index a6d694192ec57cf66c1d80d54aeed7d6257c905b..92b6de1bc3dd9abcee2c7b65b2348dc0e2a97352 100644
--- a/lib/modules/Crypto/rsa.pike
+++ b/lib/modules/Crypto/rsa.pike
@@ -81,7 +81,7 @@ int sha_verify(string message, string signature)
   string s;
   
   hash->update(message);
-  s = hash->digest;
+  s = hash->digest();
   s = sprintf("%c%s%c%s", 4, "sha1", strlen(s), s);
 
   return s == rsa_unpad(BIGNUM(signature, 256)->powm(e, n), 1);
diff --git a/src/modules/_Crypto/cbc.c b/src/modules/_Crypto/cbc.c
index 3147bb1144db55d7f094277a092d2ded48f88038..4a9dd8544078cc4bba96159ac4ecb3408456c415 100644
--- a/src/modules/_Crypto/cbc.c
+++ b/src/modules/_Crypto/cbc.c
@@ -1,5 +1,5 @@
 /*
- * $Id: cbc.c,v 1.7 1997/03/17 03:11:14 hubbe Exp $
+ * $Id: cbc.c,v 1.8 1997/04/10 02:33:26 nisse Exp $
  *
  * CBC (Cipher Block Chaining Mode) crypto module for Pike.
  *
@@ -260,7 +260,7 @@ static void f_decrypt_block(INT32 args)
   if (sp[-1].type != T_STRING) {
     error("Bad argument 1 to cbc->decrypt_block()\n");
   }
-  if (sp[-1].u.string->len & THIS->block_size) {
+  if (sp[-1].u.string->len % THIS->block_size) {
     error("Bad length of argument 1 to cbc->decrypt_block()\n");
   }
   if (!(result = alloca(sp[-1].u.string->len))) {
diff --git a/src/modules/_Crypto/crypto.c b/src/modules/_Crypto/crypto.c
index 03858cb3b47373bb74d307f616228eb6f56a5a9e..7960d73b3d0b4fdfd25765b7c58b6176e3a0a33a 100644
--- a/src/modules/_Crypto/crypto.c
+++ b/src/modules/_Crypto/crypto.c
@@ -1,5 +1,5 @@
 /*
- * $Id: crypto.c,v 1.19 1997/03/23 18:18:55 nisse Exp $
+ * $Id: crypto.c,v 1.20 1997/04/10 02:33:27 nisse Exp $
  *
  * A pike module for getting access to some common cryptos.
  *
@@ -397,11 +397,10 @@ static void f_pad(INT32 args)
     error("Too many arguments to crypto->pad()\n");
   }
 
-  len = THIS->block_size - 1 - THIS->backlog_len;
-  for (i=0; i < len; i++)
-    THIS->backlog[THIS->backlog_len + i] = my_rand() & 0xff;
+  for (i = THIS->backlog_len; i < THIS->block_size - 1; i++) 
+    THIS->backlog[i] = my_rand() & 0xff;
   
-  THIS->backlog[i] = len;
+  THIS->backlog[THIS->block_size - 1] = 7 - THIS->backlog_len;
 
   push_string(make_shared_binary_string((const char *)THIS->backlog,
 					THIS->block_size));
diff --git a/src/modules/_Crypto/test_crypto.pike b/src/modules/_Crypto/test_crypto.pike
index b31efb54cf054e426e98ee23d966da975e884b00..0088a61261efe2c4598b05935aadcd614c2248f0 100755
--- a/src/modules/_Crypto/test_crypto.pike
+++ b/src/modules/_Crypto/test_crypto.pike
@@ -7,7 +7,6 @@ import Crypto;
 #define K(a) hex_to_string(a)
 #define H(a) string_to_hex(a)
 
-
 int test_des()
 {
   string *keys = ({ K("0101010101010180"),
@@ -60,7 +59,6 @@ int test_des()
   return err;
 }
 
-
 int test_idea()
 {
   string key = K("0123456789abcdef0123456789abcdef");
@@ -220,5 +218,5 @@ int test_cbc()
 
 int main()
 {
-  return test_des() | test_idea() | test_cbc();
+  return test_des() |  test_idea() | test_cbc();
 }