From raif@fl.net.au Wed Nov 21 05:34:22 2001
Received: from int-mail.syd.fl.net.au ([202.181.0.28])
by fencepost.gnu.org with smtp (Exim 3.22 #1 (Debian))
id 166Uhy-0004FJ-00
for
Connects Up To 100 Participants=21=
B>
Required Input Field*
Long Distance
Conferencing
Only 18 Cents Per
Minute
G=
et the best
quality, the easiest to use, and lowest rate in the
industry.
If you like saving =
money, fill
out the form below and one of our consultants will contact
you.
This ad is being sent in compliance with Senate Bill 1618=
, Title 3, Section 301.
You have recently visited our web site, referral or affiliate sit=
es which indicated you were
interested in communication services. If this email is reaching =
you in error and you feel that you have not contacted
us, Click
here. We sincerely apologize, and assure you will be r=
emoved from our distribution list.
Are you =
developing=20
Java applications using Swing, AWT and=20
servlets/JSP? Companies = that=20 develop Java applications today must choose between making a GUI = front end=20 using AWT/Swing or HTML front end using servlets and JSP. Either = choice=20 has advantages and disadvantages, but it is clear that the ideal = solution=20 would support both. However, because these technologies are very = different=20 in their nature, only one can be typically implemented in a = finished=20 application. There is a large market for GUI based Java = applications but=20 these are running into speed and compatibility problems. Also, = applets=20 executed within browsers cannot take advantage of the latest Swing = controls and features. Taken together, these issues prevent = companies from=20 developing GUI as they should be able to do. WebCream solves these = problems without programmers having to learn any APIs and without = any=20 modification to existing forms. |
|
WebCream 4.0 is=20 here and you have to see it to believe = it! WebCream is a unique tool for Java, that provides = automated=20 web-enabling for GUI based Java applications and applets. = WebCream=20 allows developers to implement a GUI front end using AWT and = Swing, and at=20 the same time automatically get HTML access to the = application. In a=20 way, WebCream can be thought of as a dynamic Java to HTML = converter, that=20 converts Java frames and dialogs to HTML on the fly. It = then=20 emulates web page actions as GUI events to retain application = original=20 logic. WebCream is unique in that it requires no modifications to = existing=20 forms and business logic, and does not require programmers to = learn any=20 APIs. It is designed to publish existing applications and applets, = it's=20 just a matter of setting up your web server and a property file = describing=20 the application. The rest is handled by WebCream. To see a = demonstration=20 of WebCream live, check out our Demos page. Visit = WebCream page at=20 http://www.creamtec.com/webcream for=20 detailed information. |
= Featured in =20 |
We apologize if =
you have=20
received this email by mistake. This is a one-time notification =
and you=20
will not receive any email from CreamTec unless you register on =
our=20
website. If you are a registered customer of CreamTec and wish to be =
removed=20
from our list just reply to this email or send an email to remove@creamtec.com. =
While browsing the web on 1/21/2002, I found you on this web site http://www.gnu.org/software/classpathx/crypto/api/overview-summary.html titled GNU CRYPTOGRAPHIC PRIMITIVES AND TOOLS, VERSION 1.0.0: OVERVIEW .
I know you will be glad to find out about a related crypto and security service CryptoHeaven. Have a look at the web site (.com) to find out more info...
jeff.
ps. I'm not trying to solicit you with junk, just thought you would be genuinely interested.
------000000000000000000000--
From cnc0@naver.com Tue Feb 26 02:33:15 2002
Received: from [211.34.126.2] (helo=naver.com)
by fencepost.gnu.org with smtp (Exim 3.33 #1 (Debian))
id 16fc6s-0000Dx-00
for
+ * Serpent was designed by Ross Anderson, Eli Biham, and Lars Knudsen as
+ * a proposed cipher for the Advanced Encryption Standard.
+ *
+ * Reference: Serpent: A
+ * Candidate Block Cipher for the Advanced Encryption Standard.
+ *
+ * Serpent can be sped up greatly by replacing S-box substitution with a
+ * sequence of binary operations, and the optimal implementation depends
+ * upon finding the fastest sequence of binary operations that reproduce
+ * this substitution. This implementation uses the S-boxes discovered by
+ * Dag Arne Osvik, which are
+ * optimized for the Pentium family of processors.
+ *
+ * @version $Revision: 1.1 $
+ */
+public class Serpent extends BaseCipher {
+
+ // Constants and variables
+ // -----------------------------------------------------------------
+
+ private static final String NAME = "serpent";
+
+ private static final int DEFAULT_KEY_SIZE = 32;
+ private static final int DEFAULT_BLOCK_SIZE = 16;
+ private static final int ROUNDS = 32;
+
+ /** The fractional part of the golden ratio, (sqrt(5)+1)/2. */
+ private static final int PHI = 0x9e3779b9;
+
+ // Constructors
+ // -----------------------------------------------------------------
+
+ /** Trivial zero-argument constructor. */
+ public Serpent() {
+ super(Registry.SERPENT_CIPHER, DEFAULT_BLOCK_SIZE, DEFAULT_KEY_SIZE);
+ }
+
+ // Implementation of the Cloneable interface
+ // -----------------------------------------------------------------
+
+ public Object clone() {
+ return new Serpent();
+ }
+
+ // Implementations of abstract methods from BaseCipher
+ // -----------------------------------------------------------------
+
+ public Iterator blockSizes() {
+ return Collections.singleton(new Integer(DEFAULT_BLOCK_SIZE)).iterator();
+ }
+
+ public Iterator keySizes() {
+ return new Iterator() {
+ int i = 0;
+ // Support 128, 192, and 256 bit keys.
+ Integer[] keySizes = {
+ new Integer(16), new Integer(24), new Integer(32)
+ };
+
+ public boolean hasNext() {
+ return i < keySizes.length;
+ }
+
+ public Object next() {
+ if (hasNext()) {
+ return keySizes[i++];
+ }
+ return null;
+ }
+
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+ };
+ }
+
+ public Object
+ makeKey(byte[] key, int blockSize) throws InvalidKeyException {
+ // Not strictly true, but here to conform with the AES proposal.
+ // This restriction can be removed if deemed necessary.
+ if (key.length != 16 && key.length != 24 && key.length != 32) {
+ throw new InvalidKeyException("Key length is not 16, 24, or 32 bytes");
+ }
+
+ // Here w is our "pre-key".
+ int[] w = new int[4*(ROUNDS+1)];
+ int i, j;
+ for (i = 0, j = key.length-4; i < 8 && j >= 0; i++) {
+ w[i] = (key[j ] & 0xff) << 24 | (key[j+1] & 0xff) << 16 |
+ (key[j+2] & 0xff) << 8 | (key[j+3] & 0xff);
+ j -= 4;
+ }
+ // Pad key if < 256 bits.
+ if (i != 8) {
+ w[i] = 1;
+ }
+ // Transform using w_i-8 ... w_i-1
+ for (i = 8; i < 16; i++) {
+ int t = w[i-8] ^ w[i-5] ^ w[i-3] ^ w[i-1] ^ PHI ^ (i-8);
+ w[i] = t << 11 | t >>> 21;
+ }
+ // Translate by 8.
+ for (i = 0; i < 8; i++) {
+ w[i] = w[i+8];
+ }
+ // Transform the rest of the key.
+ for (i = 8; i < w.length; i++) {
+ int t = w[i-8] ^ w[i-5] ^ w[i-3] ^ w[i-1] ^ PHI ^ i;
+ w[i] = t << 11 | t >>> 21;
+ }
+
+ // After these s-boxes the pre-key (w, above) will become the
+ // session key (w, below).
+ sbox3(w[ 0], w[ 1], w[ 2], w[ 3], w, 0);
+ sbox2(w[ 4], w[ 5], w[ 6], w[ 7], w, 4);
+ sbox1(w[ 8], w[ 9], w[ 10], w[ 11], w, 8);
+ sbox0(w[ 12], w[ 13], w[ 14], w[ 15], w, 12);
+ sbox7(w[ 16], w[ 17], w[ 18], w[ 19], w, 16);
+ sbox6(w[ 20], w[ 21], w[ 22], w[ 23], w, 20);
+ sbox5(w[ 24], w[ 25], w[ 26], w[ 27], w, 24);
+ sbox4(w[ 28], w[ 29], w[ 30], w[ 31], w, 28);
+ sbox3(w[ 32], w[ 33], w[ 34], w[ 35], w, 32);
+ sbox2(w[ 36], w[ 37], w[ 38], w[ 39], w, 36);
+ sbox1(w[ 40], w[ 41], w[ 42], w[ 43], w, 40);
+ sbox0(w[ 44], w[ 45], w[ 46], w[ 47], w, 44);
+ sbox7(w[ 48], w[ 49], w[ 50], w[ 51], w, 48);
+ sbox6(w[ 52], w[ 53], w[ 54], w[ 55], w, 52);
+ sbox5(w[ 56], w[ 57], w[ 58], w[ 59], w, 56);
+ sbox4(w[ 60], w[ 61], w[ 62], w[ 63], w, 60);
+ sbox3(w[ 64], w[ 65], w[ 66], w[ 67], w, 64);
+ sbox2(w[ 68], w[ 69], w[ 70], w[ 71], w, 68);
+ sbox1(w[ 72], w[ 73], w[ 74], w[ 75], w, 72);
+ sbox0(w[ 76], w[ 77], w[ 78], w[ 79], w, 76);
+ sbox7(w[ 80], w[ 81], w[ 82], w[ 83], w, 80);
+ sbox6(w[ 84], w[ 85], w[ 86], w[ 87], w, 84);
+ sbox5(w[ 88], w[ 89], w[ 90], w[ 91], w, 88);
+ sbox4(w[ 92], w[ 93], w[ 94], w[ 95], w, 92);
+ sbox3(w[ 96], w[ 97], w[ 98], w[ 99], w, 96);
+ sbox2(w[100], w[101], w[102], w[103], w, 100);
+ sbox1(w[104], w[105], w[106], w[107], w, 104);
+ sbox0(w[108], w[109], w[110], w[111], w, 108);
+ sbox7(w[112], w[113], w[114], w[115], w, 112);
+ sbox6(w[116], w[117], w[118], w[119], w, 116);
+ sbox5(w[120], w[121], w[122], w[123], w, 120);
+ sbox4(w[124], w[125], w[126], w[127], w, 124);
+ sbox3(w[128], w[129], w[130], w[131], w, 128);
+
+ return w;
+ }
+
+ public
+ void encrypt(byte[] in, int i, byte[] out, int o, Object K, int bs) {
+ int[] key = (int[]) K;
+ int[] x = new int[4];
+ x[3] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 |
+ (in[i++] & 0xff) << 8 | (in[i++] & 0xff);
+ x[2] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 |
+ (in[i++] & 0xff) << 8 | (in[i++] & 0xff);
+ x[1] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 |
+ (in[i++] & 0xff) << 8 | (in[i++] & 0xff);
+ x[0] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 |
+ (in[i++] & 0xff) << 8 | (in[i++] & 0xff);
+
+ sbox0(key[ 0]^x[0], key[ 1]^x[1], key[ 2]^x[2], key[ 3]^x[3], x, 0);
+ transform(x);
+ sbox1(key[ 4]^x[0], key[ 5]^x[1], key[ 6]^x[2], key[ 7]^x[3], x, 0);
+ transform(x);
+ sbox2(key[ 8]^x[0], key[ 9]^x[1], key[ 10]^x[2], key[ 11]^x[3], x, 0);
+ transform(x);
+ sbox3(key[ 12]^x[0], key[ 13]^x[1], key[ 14]^x[2], key[ 15]^x[3], x, 0);
+ transform(x);
+ sbox4(key[ 16]^x[0], key[ 17]^x[1], key[ 18]^x[2], key[ 19]^x[3], x, 0);
+ transform(x);
+ sbox5(key[ 20]^x[0], key[ 21]^x[1], key[ 22]^x[2], key[ 23]^x[3], x, 0);
+ transform(x);
+ sbox6(key[ 24]^x[0], key[ 25]^x[1], key[ 26]^x[2], key[ 27]^x[3], x, 0);
+ transform(x);
+ sbox7(key[ 28]^x[0], key[ 29]^x[1], key[ 30]^x[2], key[ 31]^x[3], x, 0);
+ transform(x);
+ sbox0(key[ 32]^x[0], key[ 33]^x[1], key[ 34]^x[2], key[ 35]^x[3], x, 0);
+ transform(x);
+ sbox1(key[ 36]^x[0], key[ 37]^x[1], key[ 38]^x[2], key[ 39]^x[3], x, 0);
+ transform(x);
+ sbox2(key[ 40]^x[0], key[ 41]^x[1], key[ 42]^x[2], key[ 43]^x[3], x, 0);
+ transform(x);
+ sbox3(key[ 44]^x[0], key[ 45]^x[1], key[ 46]^x[2], key[ 47]^x[3], x, 0);
+ transform(x);
+ sbox4(key[ 48]^x[0], key[ 49]^x[1], key[ 50]^x[2], key[ 51]^x[3], x, 0);
+ transform(x);
+ sbox5(key[ 52]^x[0], key[ 53]^x[1], key[ 54]^x[2], key[ 55]^x[3], x, 0);
+ transform(x);
+ sbox6(key[ 56]^x[0], key[ 57]^x[1], key[ 58]^x[2], key[ 59]^x[3], x, 0);
+ transform(x);
+ sbox7(key[ 60]^x[0], key[ 61]^x[1], key[ 62]^x[2], key[ 63]^x[3], x, 0);
+ transform(x);
+ sbox0(key[ 64]^x[0], key[ 65]^x[1], key[ 66]^x[2], key[ 67]^x[3], x, 0);
+ transform(x);
+ sbox1(key[ 68]^x[0], key[ 69]^x[1], key[ 70]^x[2], key[ 71]^x[3], x, 0);
+ transform(x);
+ sbox2(key[ 72]^x[0], key[ 73]^x[1], key[ 74]^x[2], key[ 75]^x[3], x, 0);
+ transform(x);
+ sbox3(key[ 76]^x[0], key[ 77]^x[1], key[ 78]^x[2], key[ 79]^x[3], x, 0);
+ transform(x);
+ sbox4(key[ 80]^x[0], key[ 81]^x[1], key[ 82]^x[2], key[ 83]^x[3], x, 0);
+ transform(x);
+ sbox5(key[ 84]^x[0], key[ 85]^x[1], key[ 86]^x[2], key[ 87]^x[3], x, 0);
+ transform(x);
+ sbox6(key[ 88]^x[0], key[ 89]^x[1], key[ 90]^x[2], key[ 91]^x[3], x, 0);
+ transform(x);
+ sbox7(key[ 92]^x[0], key[ 93]^x[1], key[ 94]^x[2], key[ 95]^x[3], x, 0);
+ transform(x);
+ sbox0(key[ 96]^x[0], key[ 97]^x[1], key[ 98]^x[2], key[ 99]^x[3], x, 0);
+ transform(x);
+ sbox1(key[100]^x[0], key[101]^x[1], key[102]^x[2], key[103]^x[3], x, 0);
+ transform(x);
+ sbox2(key[104]^x[0], key[105]^x[1], key[106]^x[2], key[107]^x[3], x, 0);
+ transform(x);
+ sbox3(key[108]^x[0], key[109]^x[1], key[110]^x[2], key[111]^x[3], x, 0);
+ transform(x);
+ sbox4(key[112]^x[0], key[113]^x[1], key[114]^x[2], key[115]^x[3], x, 0);
+ transform(x);
+ sbox5(key[116]^x[0], key[117]^x[1], key[118]^x[2], key[119]^x[3], x, 0);
+ transform(x);
+ sbox6(key[120]^x[0], key[121]^x[1], key[122]^x[2], key[123]^x[3], x, 0);
+ transform(x);
+ sbox7(key[124]^x[0], key[125]^x[1], key[126]^x[2], key[127]^x[3], x, 0);
+
+ x[0] ^= key[128];
+ x[1] ^= key[129];
+ x[2] ^= key[130];
+ x[3] ^= key[131];
+
+ for (int j = x.length-1; j >= 0; j--) {
+ out[o++] = (byte) (x[j] >>> 24);
+ out[o++] = (byte) (x[j] >>> 16);
+ out[o++] = (byte) (x[j] >>> 8);
+ out[o++] = (byte) x[j];
+ }
+ }
+
+ public
+ void decrypt(byte[] in, int i, byte[] out, int o, Object K, int bs) {
+ int[] key = (int[]) K;
+ int[] x = new int[4];
+ x[3] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 |
+ (in[i++] & 0xff) << 8 | (in[i++] & 0xff);
+ x[2] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 |
+ (in[i++] & 0xff) << 8 | (in[i++] & 0xff);
+ x[1] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 |
+ (in[i++] & 0xff) << 8 | (in[i++] & 0xff);
+ x[0] = (in[i++] & 0xff) << 24 | (in[i++] & 0xff) << 16 |
+ (in[i++] & 0xff) << 8 | (in[i++] & 0xff);
+
+ sboxI7(key[128]^x[0], key[129]^x[1], key[130]^x[2], key[131]^x[3], x, 0);
+ transformInv(x, key, 124);
+ sboxI6(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 120);
+ sboxI5(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 116);
+ sboxI4(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 112);
+ sboxI3(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 108);
+ sboxI2(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 104);
+ sboxI1(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 100);
+ sboxI0(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 96);
+ sboxI7(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 92);
+ sboxI6(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 88);
+ sboxI5(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 84);
+ sboxI4(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 80);
+ sboxI3(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 76);
+ sboxI2(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 72);
+ sboxI1(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 68);
+ sboxI0(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 64);
+ sboxI7(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 60);
+ sboxI6(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 56);
+ sboxI5(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 52);
+ sboxI4(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 48);
+ sboxI3(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 44);
+ sboxI2(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 40);
+ sboxI1(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 36);
+ sboxI0(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 32);
+ sboxI7(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 28);
+ sboxI6(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 24);
+ sboxI5(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 20);
+ sboxI4(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 16);
+ sboxI3(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 12);
+ sboxI2(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 8);
+ sboxI1(x[0], x[1], x[2], x[3], x, 0);
+ transformInv(x, key, 4);
+ sboxI0(x[0], x[1], x[2], x[3], x, 0);
+
+ x[0] ^= key[0];
+ x[1] ^= key[1];
+ x[2] ^= key[2];
+ x[3] ^= key[3];
+
+ for (int j = x.length-1; j >= 0; j--) {
+ out[o++] = (byte) (x[j] >>> 24);
+ out[o++] = (byte) (x[j] >>> 16);
+ out[o++] = (byte) (x[j] >>> 8);
+ out[o++] = (byte) x[j];
+ }
+ }
+
+ // Own methods
+ // -----------------------------------------------------------------
+
+ /** Serpent's linear transformation. */
+ private void transform(int[] x) {
+ x[0] = x[0] << 13 | x[0] >>> 19;
+ x[2] = x[2] << 3 | x[2] >>> 29;
+ x[1] = x[1] ^ x[0] ^ x[2];
+ x[3] = x[3] ^ x[2] ^ (x[0] << 3);
+ x[1] = x[1] << 1 | x[1] >>> 31;
+ x[3] = x[3] << 7 | x[3] >>> 25;
+ x[0] = x[0] ^ x[1] ^ x[3];
+ x[2] = x[2] ^ x[3] ^ (x[1] << 7);
+ x[0] = x[0] << 5 | x[0] >>> 27;
+ x[2] = x[2] << 22 | x[2] >>> 10;
+ }
+
+ /**
+ * The inverse linear transformation. The XOR with the key is done
+ * here to save space above.
+ *
+ * @param x The current block being decrypted.
+ * @param key The session key.
+ * @param off The index in the key to start from.
+ */
+ private void transformInv(int[] x, int[] key, int off) {
+ x[0] ^= key[off++];
+ x[1] ^= key[off++];
+ x[2] ^= key[off++];
+ x[3] ^= key[off++];
+
+ x[2] = x[2] >>> 22 | x[2] << 10;
+ x[0] = x[0] >>> 5 | x[0] << 27;
+ x[2] = x[2] ^ x[3] ^ (x[1] << 7);
+ x[0] = x[0] ^ x[1] ^ x[3];
+ x[3] = x[3] >>> 7 | x[3] << 25;
+ x[1] = x[1] >>> 1 | x[1] << 31;
+ x[3] = x[3] ^ x[2] ^ (x[0] << 3);
+ x[1] = x[1] ^ x[0] ^ x[2];
+ x[2] = x[2] >>> 3 | x[2] << 29;
+ x[0] = x[0] >>> 13 | x[0] << 19;
+ }
+
+ // Bit-flip madness methods
+ //
+ // The following S-Box functions were developed by Dag Arne Osvik,
+ // and are described in his paper, "Speeding up Serpent". They are
+ // optimized to perform on the Pentium chips, but work well here too.
+ //
+ // The methods below are Copyright (C) 2000 Dag Arne Osvik.
+
+ // These methods may be de-assembler-ized (more than one operation in
+ // each statement) for readability (?) and speed (??).
+
+ /** S-Box 0. */
+ private void sbox0(int r0, int r1, int r2, int r3, int[] w, int off) {
+ int r4 = r1 ^ r2;
+ r3 ^= r0;
+ r1 = r1 & r3 ^ r0;
+ r0 = (r0 | r3) ^ r4;
+ r4 ^= r3;
+ r3 ^= r2;
+ r2 = (r2 | r1) ^ r4;
+ r4 = ~r4 | r1;
+ r1 ^= r3 ^ r4;
+ r3 |= r0;
+ w[off ] = r1 ^ r3;
+ w[off+1] = r4 ^ r3;
+ w[off+2] = r2;
+ w[off+3] = r0;
+ }
+
+ /** The inverse of S-Box 0. */
+ private void sboxI0(int r0, int r1, int r2, int r3, int[] w, int off) {
+ int r4 = r1;
+ r2 = ~r2;
+ r1 = (r1 | r0) ^ r2;
+ r4 = ~r4;
+ r2 |= r4;
+ r1 ^= r3;
+ r0 ^= r4;
+ r2 ^= r0;
+ r0 &= r3;
+ r4 ^= r0;
+ r0 = (r0 | r1) ^ r2;
+ r3 = r3 ^ r4 ^ r0 ^ r1;
+ r2 = (r2 ^ r1) & r3;
+ w[off ] = r0;
+ w[off+1] = r4 ^ r2;
+ w[off+2] = r1;
+ w[off+3] = r3;
+ }
+
+ /** S-Box 1. */
+ private void sbox1(int r0, int r1, int r2, int r3, int[] w, int off) {
+ r0 = ~r0;
+ int r4 = r0;
+ r2 = ~r2;
+ r0 &= r1;
+ r2 ^= r0;
+ r0 |= r3;
+ r3 ^= r2;
+ r1 ^= r0;
+ r0 ^= r4;
+ r4 |= r1;
+ r1 ^= r3;
+ r2 = (r2 | r0) & r4;
+ r0 ^= r1;
+ w[off ] = r2;
+ w[off+1] = r0 & r2 ^ r4;
+ w[off+2] = r3;
+ w[off+3] = r1 & r2 ^ r0;
+ }
+
+ /** The inverse of S-Box 1. */
+ private void sboxI1(int r0, int r1, int r2, int r3, int[] w, int off) {
+ int r4 = r1;
+ r1 ^= r3;
+ r3 = r3 & r1 ^ r0;
+ r4 ^= r2;
+ r2 ^= r3;
+ r0 = (r0 | r1) ^ r4 | r2;
+ r1 ^= r3;
+ r0 ^= r1;
+ r1 = (r1 | r3) ^ r0;
+ r4 = ~r4 ^ r1;
+ w[off ] = r4;
+ w[off+1] = r0;
+ w[off+2] = r3 ^ ((r1 | r0) ^ r0 | r4);
+ w[off+3] = r2;
+ }
+
+ /** S-Box 2. */
+ private void sbox2(int r0, int r1, int r2, int r3, int[] w, int off) {
+ int r4 = r0;
+ r0 = r0 & r2 ^ r3;
+ r2 = r2 ^ r1 ^ r0;
+ r3 = (r3 | r4) ^ r1;
+ r4 ^= r2;
+ r1 = r3;
+ r3 = (r3 | r4) ^ r0;
+ r0 &= r1;
+ r4 ^= r0;
+ w[off ] = r2;
+ w[off+1] = r3;
+ w[off+2] = r1 ^ r3 ^ r4;
+ w[off+3] = ~r4;
+ }
+
+ /** The inverse of S-Box 2. */
+ private void sboxI2(int r0, int r1, int r2, int r3, int[] w, int off) {
+ r2 ^= r3;
+ r3 ^= r0;
+ int r4 = r3;
+ r3 = r3 & r2 ^ r1;
+ r1 = (r1 | r2) ^ r4;
+ r4 &= r3;
+ r2 ^= r3;
+ r4 = r4 & r0 ^ r2;
+ r3 = ~r3;
+ r2 = (r2 & r1 | r0) ^ r3;
+ r0 = (r0 ^ r3) & r1;
+ w[off ] = r1;
+ w[off+1] = r4;
+ w[off+2] = r2;
+ w[off+3] = r3 ^ r4 ^ r0;
+ }
+
+ /** S-Box 3. */
+ private void sbox3(int r0, int r1, int r2, int r3, int[] w, int off) {
+ int r4 = r0;
+ r0 |= r3;
+ r3 ^= r1;
+ r1 &= r4;
+ r4 = r4 ^ r2 | r1;
+ r2 ^= r3;
+ r3 = r3 & r0 ^ r4;
+ r0 ^= r1;
+ r4 = r4 & r0 ^ r2;
+ r1 = (r1 ^ r3 | r0) ^ r2;
+ r0 ^= r3;
+ w[off ] = (r1 | r3) ^ r0;
+ w[off+1] = r1;
+ w[off+2] = r3;
+ w[off+3] = r4;
+ }
+
+ /** Inverse of S-Box 3. */
+ private void sboxI3(int r0, int r1, int r2, int r3, int[] w, int off) {
+ int r4 = r2;
+ r2 ^= r1;
+ r0 ^= r2;
+ r4 = r4 & r2 ^ r0;
+ r0 &= r1;
+ r1 ^= r3;
+ r3 |= r4;
+ r2 ^= r3;
+ r0 ^= r3;
+ r1 ^= r4;
+ r3 = r3 & r2 ^ r1;
+ r1 = (r1 ^ r0 | r2) ^ r4;
+ w[off ] = r2;
+ w[off+1] = r1;
+ w[off+2] = r3;
+ w[off+3] = r0 ^ r3 ^ r1;
+ }
+
+ /** S-Box 4. */
+ private void sbox4(int r0, int r1, int r2, int r3, int[] w, int off) {
+ r1 ^= r3;
+ int r4 = r1;
+ r3 = ~r3;
+ r2 ^= r3;
+ r3 ^= r0;
+ r1 = r1 & r3 ^ r2;
+ r4 ^= r3;
+ r0 ^= r4;
+ r2 = r2 & r4 ^ r0;
+ r0 &= r1;
+ r3 ^= r0;
+ r4 = (r4 | r1) ^ r0;
+ w[off ] = r1;
+ w[off+1] = r4 ^ (r2 & r3);
+ w[off+2] = ~((r0 | r3) ^ r2);
+ w[off+3] = r3;
+ }
+
+ /** Inverse of S-Box 4. */
+ private void sboxI4(int r0, int r1, int r2, int r3, int[] w, int off) {
+ int r4 = r2;
+ r2 = r2 & r3 ^ r1;
+ r1 = (r1 | r3) & r0;
+ r4 = r4 ^ r2 ^ r1;
+ r1 &= r2;
+ r0 = ~r0;
+ r3 ^= r4;
+ r1 ^= r3;
+ r3 = r3 & r0 ^ r2;
+ r0 ^= r1;
+ r3 ^= r0;
+ w[off ] = r0;
+ w[off+1] = r3 ^ r0;
+ w[off+2] = (r2 & r0 ^ r4 | r3) ^ r1;
+ w[off+3] = r4;
+ }
+
+ /** S-Box 5. */
+ private void sbox5(int r0, int r1, int r2, int r3, int[] w, int off) {
+ r0 ^= r1;
+ r1 ^= r3;
+ int r4 = r1;
+ r3 = ~r3;
+ r1 &= r0;
+ r2 ^= r3;
+ r1 ^= r2;
+ r2 |= r4;
+ r4 ^= r3;
+ r3 = r3 & r1 ^ r0;
+ r4 = r4 ^ r1 ^ r2;
+ w[off ] = r1;
+ w[off+1] = r3;
+ w[off+2] = r0 & r3 ^ r4;
+ w[off+3] = ~(r2 ^ r0) ^ (r4 | r3);
+ }
+
+ /** Inverse of S-Box 5. */
+ private void sboxI5(int r0, int r1, int r2, int r3, int[] w, int off) {
+ int r4 = r3;
+ r1 = ~r1;
+ r2 ^= r1;
+ r3 = (r3 | r0) ^ r2;
+ r4 ^= r3;
+ r2 = (r2 | r1) & r0 ^ r4;
+ r4 = (r4 | r0) ^ r1 ^ r2;
+ r1 = r1 & r2 ^ r3;
+ r3 &= r4;
+ r4 ^= r1;
+ w[off ] = r1;
+ w[off+1] = ~r4;
+ w[off+2] = r3 ^ r4 ^ r0;
+ w[off+3] = r2;
+ }
+
+ /** S-Box 6. */
+ private void sbox6(int r0, int r1, int r2, int r3, int[] w, int off) {
+ int r4 = r3;
+ r2 = ~r2;
+ r3 = r3 & r0 ^ r2;
+ r0 ^= r4;
+ r2 = (r2 | r4) ^ r0;
+ r1 ^= r3;
+ r0 |= r1;
+ r2 ^= r1;
+ r4 ^= r0;
+ r0 = (r0 | r3) ^ r2;
+ r4 = r4 ^ r3 ^ r0;
+ w[off ] = r0;
+ w[off+1] = r1;
+ w[off+2] = r4;
+ w[off+3] = r2 & r4 ^ ~r3;
+ }
+
+ /** Inverse of S-Box 6. */
+ private void sboxI6(int r0, int r1, int r2, int r3, int[] w, int off) {
+ int r4 = r2;
+ r0 ^= r2;
+ r2 &= r0;
+ r4 ^= r3;
+ r3 ^= r1;
+ r2 = ~r2 ^ r3;
+ r4 |= r0;
+ r0 ^= r2;
+ r3 ^= r4;
+ r4 ^= r1;
+ r1 = r1 & r3 ^ r0;
+ r0 = r0 ^ r3 | r2;
+ w[off ] = r1;
+ w[off+1] = r2;
+ w[off+2] = r4 ^ r0;
+ w[off+3] = r3 ^ r1;
+ }
+
+ /** S-Box 7. */
+ private void sbox7(int r0, int r1, int r2, int r3, int[] w, int off) {
+ int r4 = r1;
+ r1 = (r1 | r2) ^ r3;
+ r4 ^= r2;
+ r2 ^= r1;
+ r3 = (r3 | r4) & r0;
+ r4 ^= r2;
+ r3 ^= r1;
+ r1 = (r1 | r4) ^ r0;
+ r0 = (r0 | r4) ^ r2;
+ r1 ^= r4;
+ r2 ^= r1;
+ w[off ] = r4 ^ (~r2 | r0);
+ w[off+1] = r3;
+ w[off+2] = r1 & r0 ^ r4;
+ w[off+3] = r0;
+ }
+
+ /** Inverse of S-Box 7. */
+ private void sboxI7(int r0, int r1, int r2, int r3, int[] w, int off) {
+ int r4 = r2;
+ r2 = ~(r2 ^ r0);
+ r0 &= r3;
+ r4 |= r3;
+ r3 ^= r1;
+ r1 |= r0;
+ r0 ^= r2;
+ r2 &= r4;
+ r3 &= r4;
+ r1 ^= r2;
+ r2 ^= r0;
+ r0 = (r0 | r2) ^ r3;
+ r4 ^= r1;
+ w[off ] = r3 ^ r4 ^ r2;
+ w[off+1] = r0;
+ w[off+2] = r1;
+ w[off+3] = (r4 | r0) ^ r2;
+ }
+}
From raif@fl.net.au Thu Jun 06 07:10:43 2002
Received: from int-mail.syd.fl.net.au ([202.181.0.28] helo=delenn.fl.net.au)
by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian))
id 17FvAA-0001JT-00
for
¡ß´Ü±â°£¿¡ »ç»ó
ÃÖ°íÀÇ °í¼ÒµæÀ» °¡Á®´ÙÁÙ »ç¾÷, ´ºÆ®¸®¼Ç Æ÷ ¶óÀÌÇÁ
´ÙÀ½ Ä«Æä
±èÈ«±ÔÀÔ´Ï´Ù.
¢Ñ'´ºÆ®¸®¼Ç Æ÷ ¶óÀÌÇÁ' »çÀÌÆ® : http://one.good.to
1. ´ºÆ®¸®¼Ç Æ÷
¶óÀÌÇÁ´Â ¾î¶² ȸ»çÀΰ¡?
(ÁÖ)´ºÆ®¸®¼Ç Æ÷ ¶óÀÌÇÁ´Â ¹Ì±¹¿¡ º»»ç¸¦ µÎ°íÀÖ´Â
¼¼°èÀûÀÎ ³×Æ®¿÷ ¸¶ÄÉÆà ´Ù±¹Àû ȸ»ç·Î µåµð¾î À̹ø 2¿ù22ÀÏ Çѱ¹¿¡
ÁøÃâÇß½À´Ï´Ù.
4¿ù±îÁö ÃÊÇì´õ »ç¾÷ÀÚ¸¦ ¸ð½Ê´Ï´Ù.
2. ÀÎÅͳÝÀ¸·Î
°¡»ó °¡ÀÔÀ̶õ?
Á¤¸» ȹ±âÀûÀÎ ¹æ½ÄÀÔ´Ï´Ù.^^ ÀúÈñ ÀÚµ¿ °¡ÀÔ ½Ã½ºÅÛÀ¸·Î
ȸ¿øµéÀÌ ¸ô·Á¿À°í ÀÖ´Â ±¤°æÀ» Á÷Á¢ ¸ñ°ÝÇÏ°í üÇèÇϽʽÿÀ. ½Ç·Î ³î¶ó¿î ÀÏÀÌ
ÀϾ°í ÀÖ½À´Ï´Ù.
(°¡ÀÔÇϽøé ÀÚ±â ȨÆäÀÌÁö°¡ »ý±â°í ÇÏ·ç¿¡ ÀÚ±â
ÇϺο¡ 150-200¸í¾¿ ´Ã¾î³³´Ï´Ù. ÀÚ±â ȨÆäÀÌÁö·Î È«º¸ °¡´É) ¢Ñ ÀÚ½ÅÀÇ
ȨÆäÀÌÁö ÁÖ¼Ò : http://ebiz7.net/myte
am/index.php?id=º»ÀξÆÀ̵ð
3. ¿Ö »¡¸® °¡ÀÔÇØ¾ß Çϴ°¡? Áö±ÝÀº
³×Æ®¿öÅ© ¸¶ÄÉÆà ÇìµåµéÀÌ °¡ÀÔÇÏ´Â ½Ã±âÀÔ´Ï´Ù.
ÀÎÅÍ³Ý °¡ÀÔ ½Ã½ºÅÛÀ»
°¡µ¿ ½ÃÀÛÇÏ°Ô µÇ¾ú½À´Ï´Ù. ¿À´ÃÀº ¾à200¸í... Á¤¸» ±âÇϱ޼öÀûÀ¸·Î °¡ÀÔÇÏ°í
ÀÖ½À´Ï´Ù.
4. ¹«¾ùÀ» ¾î¶»°Ô ÇØ¾ß Çϴ°¡?
°¡ÀÔ°ú µ¿½Ã¿¡ Àú¿Í °°Àº
ÀÚµ¿ È«º¸¿ë ȨÆäÀÌÁö¸¦ ¹«·á·Î Á¦°øÇÕ´Ï´Ù. »ç¶÷°ú »ç¶÷ÀÌ ¿¬°áµÇ¾î ¹«ÇÑ
ÀÌÀÍÀÌ Ã¢ÃâµË´Ï´Ù. ±×ÀÌ»óÀÇ ³ë·ÂÀº ´ç½ÅÀ» ºÎÀÚ·Î ¸¸µé °ÍÀÔ´Ï´Ù. ÇÔ²² Çϱâ
¶§¹®¿¡ ¼º°ø ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¹«·á°¡»ó°¡ÀÔ : http://one.good.to
Áö±Ý ¹Ù·Î Á¢¼ÓÇϼ¼¿ä ³»ÀÏÀÌ¸é ±×¸¸Å
´Ê½À´Ï´Ù
http://cafe.daum.net/newsamo (°ü·ÃÁ¤º¸)
¢º ¼º°øÀº µµÀüÇÏ´Â ÀÚÀÇ
°ÍÀÔ´Ï´Ù. Æò»ýÀ» º¸Àå¹ÞÀ» ¼ö ÀÖ´Â ÃÖ»óÀÇ ºñÁö´Ï½º ,³×Æ®¿÷ ¸¶ÄÉÆÿ¡¼ ²ÞÀ»
¾ò¾î °¡½Ê½Ã¿À. Ç×»ó Á¤º¸¿¡ ¾Õ¼± ÀÚ°¡ ¼º°øÇÏ´Â °Í °°½À´Ï´Ù.
»çÀÌÆ®
Á¢¼Ó(ÀúÀÇ È¨ÆäÀÌÁö)¸¦ Àß °Ë»öÇØ º¸½Å ÈÄ, °áÁ¤ÇϼÌÀ¸¸é ÇÏ´ÜÀÇ °¡»óȸ¿øµî·ÏÀ»
Ŭ¸¯, ¹«·áµî·Ï ÇÏ½Ã°í ¿¬¶ô Áֽøé ÃÊÇì´õ ¸®´õ»ç¾÷ÀڷμÀÇ ½Ã½ºÅÛ°ú
»ç¾÷ÁøÇà¿¡ °ü·ÃµÈ »ó¼¼ÇÑ ¹æÇâÁ¦½Ã¸¦ ÇÏ¿© µå¸®°Ú½À´Ï´Ù.
°¨»çÇÕ´Ï´Ù.
From winandy@informatik.uni-bonn.de Wed Apr 17 08:59:30 2002
Received: from postfix.informatik.uni-bonn.de ([131.220.131.28])
by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian))
id 16xp22-0003iJ-00
for