JSChat is a platform independent secure chat and file transfer program written in Java Swing.
JSChat is free software, distributed under the GNU General Public License version 3.
- Real-time text based chat
- File transfer
- Text chat and file transfers can be encrypted
- Encryption utilities (Key Generation/File encryption|decryption/SHA/MD5/Base64)
- Resume file transfer (for interrupted or cancelled transfers)
- CRC32 File integrity check
- DNS Host / IP lookup
- Multi-threading (continue chatting while your files transfer)
- Save last used settings
- Skins (as available for JRE for your platform)
- JSChat.jar binary (run
ant jar
) - Install a Java Runtime Environment (minimum Java 1.5)
- Save Bouncy Castle's JCA Provider bcprov-jdk15on-148.jar to JSChat's lib directory
- Install Oracle's unlimited strength JCE
- Run
run.bat
orrun.sh
(or manuallyjava "dist/JSChat.jar:lib/bcprov-jdk15on-148.jar" chat.JSChat
)
- Public/Private Keys are RSA, 1024 bit
- Text chat uses RC4, 1024 bit
- File transfer uses AES, 256 bit, CBC, PKCS#5
- Key store uses PBE with SHA and Twofish CBC
Future changes are likely to include:
- Make encryption implementations configurable
- Person 1 generates 1st half of session key and complete initialisation vector
- Person 1 then encrypts these with the Person 2's public key
- Person 1 then sends the encrypted data to Person 2
- Person 2 decrypts 1st half key and vector using their private key
- Person 2 generates 2nd half of the session key
- Person 2 then encrypts these with the Person 1's public key
- Person 2 then sends the encrypted data to Person 1
- Person 1 decrypts 2nd half key using their private key
- Each end now has 1st and 2nd half of key and initialisation vector
Key loading via a password protected key-store will be added next
JSChat is a standard Ant and Java build.
This program is a based on a non-encrypted program, version written in 1999 in a couple of sittings. Encryption was added using the ABA JCE in 2001. It has recently been open-sourced and updated to work with Bouncy Castle.