Java Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript



Java Examples

Quick Start
Java Unicode
Java Certs
Java Email
Java Encryption
Java FTP
HTML-to-XML
Java HTTP
Java IMAP
Java MHT
Java MIME
Java RSA
Java S/MIME
Java Signatures
Java Socket
Java Spider
Java Tar
Java Upload
Java XML
Java XMP
Java Zip

More Examples...
Email Object
POP3
SMTP
RSS
Atom
String
Byte Array
Self-Extractor
Service
PPMD
Deflate
DH Key Exchange
DSA

Unreleased...
Bzip2
LZW
Bz2
Icon

 

 

 

 

 

 

 

Java Blowfish ECB Encryption Matching Accepted Test Vectors

Blowfish ECB encryption in Java.

Download Java Programming Examples

// Chilkat Java Example Program
	
import com.chilkatsoft.CkCrypt2;
import com.chilkatsoft.CkByteData;
import com.chilkatsoft.CkString;

public class BlowfishECB {
	
  static {
    try {
        System.loadLibrary("chilkat");
    } catch (UnsatisfiedLinkError e) {
      System.err.println("Native code library failed to load.\n" + e);
      System.exit(1);
    }
  }
  
// The key and unencrypted data (clearBytes) are passed as hexidecimalized strings.
private static String encryptECB(CkCrypt2 crypt, String key, String clearBytes, String expectedAnswer )
{
	// Set the secret key
	crypt.SetEncodedKey(key, "hex");
	
	// Get the unencrypted data as binary data.
	CkByteData unencryptedData = new CkByteData();
	crypt.Decode(clearBytes, "hex", unencryptedData);
	
	CkString encryptedHexString = new CkString();
	crypt.EncryptBytesENC(unencryptedData,encryptedHexString);
	
	// Chilkat padded to a multiple of 16 bytes, so we discard the padding.
	// (In this case, Chilkat added 8 NULL bytes to the original 8 bytes of data,
	// so we drop 16 characters - the hex encoding uses 2 characters per byte.)
	encryptedHexString.shorten(16);
	
	// Return a string that will be added to our output for visual verification.
	return encryptedHexString.getString() + " should equal " + expectedAnswer;
}

// Java Blowfish ECB Encryption to match published test vectors
// at http://www.schneier.com/code/vectors.txt

  public static void main(String argv[]) 
  {
    CkCrypt2 crypt = new CkCrypt2();
    crypt.UnlockComponent("anything for 30-day trial");
    
	// Set the CryptAlgorithm to "blowfish2".  Chilkat's original implementation
	// of Blowfish ("blowfish") returned encrypted data
	// 4321 byte-swapped.  For backward compatibility, an additional CryptAlgorithm
	// keyword ("blowfish2") was added to indicate the new Blowfish implementation.
	crypt.put_CryptAlgorithm("blowfish2");
	crypt.put_CipherMode("ecb");
	    
	// The test vectors use 64-bit encryption.  It is advised to use 128-bit encryption
	// or higher for secure encryption.
	crypt.put_KeyLength(64);
	    
	// Padding Schemes:
	// 0 = (RFC2630) Each padding byte is the pad count (16 extra added if size is already a multiple of 16)
	// 1 = Random bytes except the last is the pad count (16 extra added if size is already multiple of 16)
	// 2 = Pad with random data. (If already a multiple of 16, no padding is added).
	// 3 = Pad with NULLs. (If already a multiple of 16, no padding is added).
	// 4 = Pad with SPACE chars(0x20). (If already a multiple of 16, no padding is added).
	    
	// To match the test vector output, we need to pad with NULL bytes.
	crypt.put_PaddingScheme(3);

	crypt.put_EncodingMode("hex");

	System.out.println(encryptECB(crypt, "0000000000000000", "0000000000000000", "4EF997456198DD78"));
	System.out.println(encryptECB(crypt, "FFFFFFFFFFFFFFFF", "FFFFFFFFFFFFFFFF", "51866FD5B85ECB8A"));
	System.out.println(encryptECB(crypt, "3000000000000000", "1000000000000001", "7D856F9A613063F2"));
	System.out.println(encryptECB(crypt, "1111111111111111", "1111111111111111", "2466DD878B963C9D"));
	System.out.println(encryptECB(crypt, "0123456789ABCDEF", "1111111111111111", "61F9C3802281B096"));
	System.out.println(encryptECB(crypt, "1111111111111111", "0123456789ABCDEF", "7D0CC630AFDA1EC7"));
	System.out.println(encryptECB(crypt, "0000000000000000", "0000000000000000", "4EF997456198DD78"));
	System.out.println(encryptECB(crypt, "FEDCBA9876543210", "0123456789ABCDEF", "0ACEAB0FC6A0A28D"));
	System.out.println(encryptECB(crypt, "7CA110454A1A6E57", "01A1D6D039776742", "59C68245EB05282B"));
	System.out.println(encryptECB(crypt, "0131D9619DC1376E", "5CD54CA83DEF57DA", "B1B8CC0B250F09A0"));
	System.out.println(encryptECB(crypt, "07A1133E4A0B2686", "0248D43806F67172", "1730E5778BEA1DA4"));
	System.out.println(encryptECB(crypt, "3849674C2602319E", "51454B582DDF440A", "A25E7856CF2651EB"));
	System.out.println(encryptECB(crypt, "04B915BA43FEB5B6", "42FD443059577FA2", "353882B109CE8F1A"));
	System.out.println(encryptECB(crypt, "0113B970FD34F2CE", "059B5E0851CF143A", "48F4D0884C379918"));
	System.out.println(encryptECB(crypt, "0170F175468FB5E6", "0756D8E0774761D2", "432193B78951FC98"));
	System.out.println(encryptECB(crypt, "43297FAD38E373FE", "762514B829BF486A", "13F04154D69D1AE5"));
	System.out.println(encryptECB(crypt, "07A7137045DA2A16", "3BDD119049372802", "2EEDDA93FFD39C79"));
	System.out.println(encryptECB(crypt, "04689104C2FD3B2F", "26955F6835AF609A", "D887E0393C2DA6E3"));
	System.out.println(encryptECB(crypt, "37D06BB516CB7546", "164D5E404F275232", "5F99D04F5B163969"));
	System.out.println(encryptECB(crypt, "1F08260D1AC2465E", "6B056E18759F5CCA", "4A057A3B24D3977B"));
	System.out.println(encryptECB(crypt, "584023641ABA6176", "004BD6EF09176062", "452031C1E4FADA8E"));
	System.out.println(encryptECB(crypt, "025816164629B007", "480D39006EE762F2", "7555AE39F59B87BD"));
	System.out.println(encryptECB(crypt, "49793EBC79B3258F", "437540C8698F3CFA", "53C55F9CB49FC019"));
	System.out.println(encryptECB(crypt, "4FB05E1515AB73A7", "072D43A077075292", "7A8E7BFA937E89A3"));
	System.out.println(encryptECB(crypt, "49E95D6D4CA229BF", "02FE55778117F12A", "CF9C5D7A4986ADB5"));
	System.out.println(encryptECB(crypt, "018310DC409B26D6", "1D9D5C5018F728C2", "D1ABB290658BC778"));
	System.out.println(encryptECB(crypt, "1C587F1C13924FEF", "305532286D6F295A", "55CB3774D13EF201"));
	System.out.println(encryptECB(crypt, "0101010101010101", "0123456789ABCDEF", "FA34EC4847B268B2"));
	System.out.println(encryptECB(crypt, "1F1F1F1F0E0E0E0E", "0123456789ABCDEF", "A790795108EA3CAE"));
	System.out.println(encryptECB(crypt, "E0FEE0FEF1FEF1FE", "0123456789ABCDEF", "C39E072D9FAC631D"));
	System.out.println(encryptECB(crypt, "0000000000000000", "FFFFFFFFFFFFFFFF", "014933E0CDAFF6E4"));
	System.out.println(encryptECB(crypt, "FFFFFFFFFFFFFFFF", "0000000000000000", "F21E9A77B71C49BC"));
	System.out.println(encryptECB(crypt, "0123456789ABCDEF", "0000000000000000", "245946885754369A"));
	System.out.println(encryptECB(crypt, "FEDCBA9876543210", "FFFFFFFFFFFFFFFF", "6B5C5A9C5D9E0A5A"));

   
  }
}




 

Need a specific example? Send a request to support@chilkatsoft.com

© 2000-2008 Chilkat Software, Inc. All Rights Reserved.