Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Android™) Hashing Encoded DataThis example explains how it's important to know exactly what bytes are getting hashed when working with encoded data, such as hex, base64, etc.
// 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 assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkCrypt2 crypt = new CkCrypt2(); // Imagine we want to SHA-1 hash this A9133F6DC63E85BE0619763F8975CA076FF91B95CB6F121CD21C016143315E11B9ED4374F174B2CC String strToHash = "A9133F6DC63E85BE0619763F8975CA076FF91B95CB6F121CD21C016143315E11B9ED4374F174B2CC"; // The question is: Do we want to hash the bytes 0xA9, 0x13, 0x3F... // or do we want to literally hash each us-ascii byte: 'A', '9', '1', '3'. // The results will obviously be different depending on what bytes are actually hashed. // To hash the decoded bytes (i.e. 0xA9, 0x13, 0x3F...) we do this: // "hex" is not an actual character encoding. It's a special value to be used to tell Chilkat to hex decode // the string and pass the decoded bytes to the hash algorithm... crypt.put_Charset("hex"); crypt.put_HashAlgorithm("sha1"); // Get the hash result in lowercase hex crypt.put_EncodingMode("hex_lower"); String hashValue = crypt.hashStringENC(strToHash); Log.i(TAG, "hash of decoded hex bytes: " + hashValue); // The result is 7a4a2ba73811fab98b4baaee2df164cbdd0d8e8e // This is how to hash the us-ascii byte values: // The Charset property defines the byte representation of the string passed to the hash algorithm: crypt.put_Charset("us-ascii"); // The EncodingMode property defines the binary encoding (hex, base64, etc.) of the hash returned as an encoded string. crypt.put_EncodingMode("hex"); crypt.put_HashAlgorithm("sha1"); hashValue = crypt.hashStringENC(strToHash); Log.i(TAG, "hash of us-ascii bytes: " + hashValue); // The result is: 2A7500F88734F4B19C79852CA0FF3E1C561F31C8 // } 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-2024 Chilkat Software, Inc. All Rights Reserved.