![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Android™) Encrypting a Data StreamThis example illustrates encrypting a large dataset using symmetric encryption algorithms like
You can provide data chunks smaller than the encryption algorithm's block size. For example, AES uses 16-byte blocks;
Chilkat handles the buffering of data as needed. If a data chunk smaller than the block size is provided, an empty string (or 0 bytes) is returned, and the data is buffered to be combined with subsequent chunks. The final chunk is padded to the algorithm's block size (as determined by the Chunk-wise decryption follows the same procedure as chunk-wise encryption.
// Important: Don't forget to include the call to System.loadLibrary // as shown at the bottom of this code sample. package com.test; import android.app.Activity; import com.chilkatsoft.*; import android.widget.TextView; import android.os.Bundle; public class SimpleActivity extends Activity { private static final String TAG = "Chilkat"; // Called when the activity is first created. @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkCrypt2 crypt = new CkCrypt2(); crypt.put_CryptAlgorithm("aes"); crypt.put_CipherMode("cbc"); crypt.put_KeyLength(128); crypt.SetEncodedKey("000102030405060708090A0B0C0D0E0F","hex"); crypt.SetEncodedIV("000102030405060708090A0B0C0D0E0F","hex"); crypt.put_EncodingMode("hex"); String txt1 = "The quick brown fox jumped over the lazy dog.\r\n"; String txt2 = "-\r\n"; String txt3 = "Done.\r\n"; CkStringBuilder sbEncrypted = new CkStringBuilder(); // Encrypt the 1st chunk: // (don't worry about feeding the data to the encryptor in // exact multiples of the encryption algorithm's block size. // Chilkat will buffer the data.) crypt.put_FirstChunk(true); crypt.put_LastChunk(false); sbEncrypted.Append(crypt.encryptStringENC(txt1)); // Encrypt the 2nd chunk crypt.put_FirstChunk(false); crypt.put_LastChunk(false); sbEncrypted.Append(crypt.encryptStringENC(txt2)); // Now encrypt N more chunks... // Remember -- we're doing this in CBC mode, so each call // to the encrypt method depends on the state from previous // calls... crypt.put_FirstChunk(false); crypt.put_LastChunk(false); int i; for (i = 0; i <= 4; i++) { sbEncrypted.Append(crypt.encryptStringENC(txt1)); sbEncrypted.Append(crypt.encryptStringENC(txt2)); } // Now encrypt the last chunk: crypt.put_FirstChunk(false); crypt.put_LastChunk(true); sbEncrypted.Append(crypt.encryptStringENC(txt3)); Log.i(TAG, sbEncrypted.getAsString()); // Now decrypt in one call. // (The data we're decrypting is both the first AND last chunk.) crypt.put_FirstChunk(true); crypt.put_LastChunk(true); String decryptedText = crypt.decryptStringENC(sbEncrypted.getAsString()); Log.i(TAG, decryptedText); // Note: You may decrypt in N chunks by setting the FirstChunk // and LastChunk properties prior to calling the Decrypt* methods } static { System.loadLibrary("chilkat"); // Note: If the incorrect library name is passed to System.loadLibrary, // then you will see the following error message at application startup: //"The application <your-application-name> has stopped unexpectedly. Please try again." } } |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.