The algorithm is well defined so all implementations compliant to the
standard are 100% interchangeable. You can check which implementation
is actually being used by calling GetType () on the return value of
SHA256.Create (). If it's SHA256Managed, then you're using the normal
one. If it's anything else, you're using a special version.

Alan
On 10 July 2012 13:39, René Ruppert <[email protected]> wrote:
> "On iOS this could default to the native implementation" - I really would
> like to know if it WILL.
> Are they compatible? Meaning: If I used SHA256Managed so far and now switch,
> can data still be decrypted?
>
> René
>
> 2012/7/10 Alan <[email protected]>
>>
>> Hey,
>>
>> Don't use 'new SHA256Managed', use 'SHA256.Create ()'. This way the
>> mono runtime will be able to select the 'best' SHA256 implementation
>> to use. On iOS this could default to the native implementation, on
>> desktop this will default to SHA256Managed.
>>
>> Alan
>>
>> On 10 July 2012 12:28, René Ruppert <[email protected]> wrote:
>> > Hi,
>> >
>> > from the docs of 5.3:
>> >
>> > Common Crypto
>> >
>> > MonoTouch will now use the iOS CommonCrypto libraries to provide some of
>> > the
>> > functionality exposed by its APIs. This replaces our managed
>> > implementations
>> > with the native versions. It is now used for for digest (hash) and
>> > symmetric
>> > ciphers, leveraging the hardware acceleration for SHA-1 and AES under
>> > the
>> > right circumstances.
>> >
>> >
>> > I'm using code like the one below for hashing and encryption. How can I
>> > take
>> > advantage of HW crypto? Or will it automatically become faster?
>> >
>> > /// <summary>
>> >
>> > /// Calculates the SHA256 hash value of the data <c>b</c>.
>> >
>> > /// </summary>
>> >
>> > /// <detail declaration="public static"/>
>> >
>> > /// <param name="b" type="byte[]">The data of which the hash value is
>> > calculated.</param>
>> >
>> > /// <returns type="byte[]">The SHA256 hash value of <c>b</c>.</returns>
>> >
>> > public static byte[] CalculateHash ( byte[] b )
>> >
>> > {
>> >
>> > SHA256Managed oSha = new SHA256Managed ();
>> >
>> > byte[] aHash = oSha.ComputeHash ( b );
>> >
>> > return aHash;
>> >
>> > }
>> >
>> > /// <summary>
>> >
>> > /// Computes SHA256 hash from a string
>> >
>> > /// </summary>
>> >
>> > /// <param name="sData"></param>
>> >
>> > /// <returns></returns>
>> >
>> > public static string ComputeSHA256HashUnicode ( string sData )
>> >
>> > {
>> >
>> > byte[] aData, aHash;
>> >
>> >
>> > UnicodeEncoding oEncoding = new UnicodeEncoding ();
>> >
>> > aData = oEncoding.GetBytes ( sData );
>> >
>> > aHash = CalculateHash(aData);
>> >
>> > string sResult = oEncoding.GetString ( aHash );
>> >
>> > return sResult;
>> >
>> > }
>> >
>> >
>> >
>> > public static void Crypt ( Stream oFileIn, Stream oFileOut,
>> > ICryptoTransform
>> > oTrans )
>> >
>> > {
>> >
>> > // Declare local variables
>> >
>> > byte[] buf = new byte[ 4096]; // Read buffer
>> >
>> > int iLen; // Current buffer length
>> >
>> > long lReadLen = 0; // Total number of bytes written.
>> >
>> > long lTotLen = oFileIn.Length; // Total length of the input file.
>> >
>> >
>> > // Move to the beginning of the file
>> >
>> > if ( oFileIn.Position > 0 && oFileIn.CanSeek )
>> >
>> > oFileIn.Seek ( 0, SeekOrigin.Begin );
>> >
>> >
>> > // Create the cryptographic stream
>> >
>> > CryptoStream encStream = new CryptoStream (oFileOut, oTrans,
>> > CryptoStreamMode.Write);
>> >
>> >
>> > // Read from the input file, then encrypt/decrypt and write to the
>> > output
>> > file.
>> >
>> > while ( lReadLen < lTotLen )
>> >
>> > {
>> >
>> > iLen = oFileIn.Read ( buf, 0, buf.Length );
>> >
>> > encStream.Write ( buf, 0, iLen );
>> >
>> > lReadLen += iLen;
>> >
>> > }
>> >
>> > // Clean up
>> >
>> > encStream.Close ();
>> >
>> > }
>> >
>> >
>> >
>> > René
>> >
>> >
>> > _______________________________________________
>> > MonoTouch mailing list
>> > [email protected]
>> > http://lists.ximian.com/mailman/listinfo/monotouch
>> >
>
>
_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch

Reply via email to