The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Crypt::SEED version 0.01 
========================

Crypt::SEED provides the Perl community with the SEED encryption 
algorithm which has been made by Korean Information Security Agency.

  - About SEED (Quoted from an old document)

	SEED is a symmetric encryption algorithm developed by KISA (Korea
	Information Security Agency) and a group of experts since 1998.  The
	input/output block size and key length of SEED is 128-bits.  SEED has
	the 16-round Feistel structure.  A 128-bit input is divided into two
	64-bit blocks and the right 64-bit block is an input to the round
	function, with a 64-bit subkey generated from the key scheduling.

	SEED is easily implemented in various software and hardware because
	it takes less memory to implement than other algorithms and generates
	keys without degrading the security of the algorithm.  In particular,
	it can be effectively adopted in a computing environment with a
	restricted resources, such as mobile devices and smart cards.

	SEED is robust against known attacks including DC (Differential
	cryptanalysis), LC (Linear cryptanalysis), and related key attacks.
	SEED has gone through wide public scrutinizing procedures.  It has
	been evaluated and is considered cryptographically secure by credible
	organizations such as ISO/IEC JTC 1/SC 27 and Japan CRYPTREC
	(Cryptography Research and Evaluation Committees)
	[ISOSEED][CRYPTREC].


SEED encryption/decryption uses a 'round key' which translated from a user key.
Whenever you add user keys to the module using new or addKey or addKeys, the
module will translate them to round keys and store them inside the module
with user keys. (Of course, in hash)
And, whenever you use the user key with encrypt, decrypt methods, the module
look for the matching round key from inside the module to do real job.

INSTALLATION

To install this module type the following:

   perl Makefile.PL
   make
   make test
   make install

EXTRA Test Script

The package contains extra testing script `filetest.pl'.
You can use this script to verify two or more system decrypt imported data
from others using the same user key used for the previous encryption.
Run this script as below at sending system after you have installed whole package:

  $ perl filetest.pl S

and then you will have an encrypted file 'crypt_remote.sed' in the current directory.
Send the file to other remote system which have installed the same module already.
In the remote system, run

  $ perl filetest.pl
  Cipher O.K.
  Recovered O.K.
  $
  
And if you find two O.K lines, it's O.K. Otherwise, something went wrong.
Be careful, however, to keep exactly the same version of filetest.pl on both system.

ENDIAN Matters.

This module contains codes affected by endian in SEED_KISA.c file,
the bytes order of multibyte data type such as integer, long, short, etc.
In almost all cases, the Makefile.PL file will handle this
matter for you.
But, test-failure cases are on which systems which have neither `Little Endian'
nore `Big Endian'.
In this cases, you may have to edit the SEED_KISA.c file by yourself to
modify `EndianChange' macro `#define'd.
If you have tested on such a system, please let me know how-to.

Notes

This module has been tested successfully against the following:
  Linux  2.6.24.2 (x86)
  Win32 XP (x86) with Camelbox Perl 5.10.x
  SunOS 5.5.1 sparc SUNW,Ultra-Enterprise with Perl 5.8.0 (Big endian)
  AIX 5.3 with Perl 5.8.2 (Big endian)

DEPENDENCIES

None.

COPYRIGHT AND LICENCE

Copyright (C) 2008 Jongpil Jeon. Perl "Artistic License" applied.
- Actually I don't care the `right'.