chiark / gitweb /
Makefiles: Use Final.sd.mk to implementing RECHECK_RM
[secnet.git] / base91-c / PHP4 / base91.php
1 <?php
2 // Copyright (c) 2005-2006 Joachim Henke
3 // http://base91.sourceforge.net/
4
5 $b91_enctab = array(
6         'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
7         'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
8         'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
9         'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
10         '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!', '#', '$',
11         '%', '&', '(', ')', '*', '+', ',', '.', '/', ':', ';', '<', '=',
12         '>', '?', '@', '[', ']', '^', '_', '`', '{', '|', '}', '~', '"'
13 );
14 $b91_dectab = array_flip($b91_enctab);
15
16 function base91_decode($d)
17 {
18         global $b91_dectab;
19         $l = strlen($d);
20         $v = -1;
21         for ($i = 0; $i < $l; ++$i) {
22                 $c = $b91_dectab[$d{$i}];
23                 if (!isset($c))
24                         continue;
25                 if ($v < 0)
26                         $v = $c;
27                 else {
28                         $v += $c * 91;
29                         $b |= $v << $n;
30                         $n += ($v & 8191) > 88 ? 13 : 14;
31                         do {
32                                 $o .= chr($b & 255);
33                                 $b >>= 8;
34                                 $n -= 8;
35                         } while ($n > 7);
36                         $v = -1;
37                 }
38         }
39         if ($v + 1)
40                 $o .= chr(($b | $v << $n) & 255);
41         return $o;
42 }
43
44 function base91_encode($d)
45 {
46         global $b91_enctab;
47         $l = strlen($d);
48         for ($i = 0; $i < $l; ++$i) {
49                 $b |= ord($d{$i}) << $n;
50                 $n += 8;
51                 if ($n > 13) {
52                         $v = $b & 8191;
53                         if ($v > 88) {
54                                 $b >>= 13;
55                                 $n -= 13;
56                         } else {
57                                 $v = $b & 16383;
58                                 $b >>= 14;
59                                 $n -= 14;
60                         }
61                         $o .= $b91_enctab[$v % 91] . $b91_enctab[$v / 91];
62                 }
63         }
64         if ($n) {
65                 $o .= $b91_enctab[$b % 91];
66                 if ($n > 7 || $b > 90)
67                         $o .= $b91_enctab[$b / 91];
68         }
69         return $o;
70 }
71 ?>