<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>offcrypto Releases Rss Feed</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx</link><description>offcrypto Releases Rss Description</description><item><title>Updated Release: CapiRC4Encrypt (Jan 08, 2009)</title><link>http://offcrypto.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=21507</link><description>&lt;div&gt;This code demonstrates parsing an EncryptionInfo struct generated by a PowerPoint file. It depends on the ManagedRC4 project.&lt;br&gt;&lt;br&gt;Use ExtractStream -e to get the header from the PowerPoint file. The password for the file is 'password'.&lt;br&gt;&lt;br&gt;Note - I updated this to use CryptImportKey instead of CryptDeriveKey - this takes one layer of the black box out of the equation.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Fri, 10 Apr 2009 02:30:29 GMT</pubDate><guid isPermaLink="false">Updated Release: CapiRC4Encrypt (Jan 08, 2009) 20090410023029A</guid></item><item><title>Released: CapiRC4Encrypt (Jan 08, 2009)</title><link>http://offcrypto.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=21507</link><description>&lt;div&gt;This code demonstrates parsing an EncryptionInfo struct generated by a PowerPoint file. It depends on the ManagedRC4 project.&lt;br&gt;&lt;br&gt;Use ExtractStream -e to get the header from the PowerPoint file. The password for the file is 'password'.&lt;br&gt;&lt;br&gt;Note - I updated this to use CryptImportKey instead of CryptDeriveKey - this takes one layer of the black box out of the equation.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;</description><author></author><pubDate>Fri, 10 Apr 2009 02:30:29 GMT</pubDate><guid isPermaLink="false">Released: CapiRC4Encrypt (Jan 08, 2009) 20090410023029A</guid></item><item><title>Updated Release: ExtractStream (Dec 21, 2008)</title><link>http://offcrypto.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20831</link><description>&lt;div&gt;ExtractStream is a utility used to list and extract streams from an OLE compound file, which is what is used for Office 2003 and earlier files, as well as encrypted files generated by Office 2007.&lt;br&gt;&lt;br&gt;Note - updated to allow PowerPoint files to have the encryption header extracted directly, since it was a pain to specify the offset. Will tackle Word and Excel shortly.&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Fri, 10 Apr 2009 02:28:34 GMT</pubDate><guid isPermaLink="false">Updated Release: ExtractStream (Dec 21, 2008) 20090410022834A</guid></item><item><title>Released: ExtractStream (Dec 21, 2008)</title><link>http://offcrypto.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20831</link><description>&lt;div&gt;ExtractStream is a utility used to list and extract streams from an OLE compound file, which is what is used for Office 2003 and earlier files, as well as encrypted files generated by Office 2007.&lt;br&gt;&lt;br&gt;Note - updated to allow PowerPoint files to have the encryption header extracted directly, since it was a pain to specify the offset. Will tackle Word and Excel shortly.&lt;/div&gt;</description><author></author><pubDate>Fri, 10 Apr 2009 02:28:34 GMT</pubDate><guid isPermaLink="false">Released: ExtractStream (Dec 21, 2008) 20090410022834A</guid></item><item><title>Updated Release: ManagedRC4 (Jan 08, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=21506</link><description>&lt;div&gt;
This project is to get around the issue that RC4 is not available in .NET. It isn't a fully featured RC4 wrapper, but it is enough to illustrate the concepts. &lt;br&gt; &lt;br&gt;An issue worth mentioning here is that CryptDeriveKey and CryptImportKey have some special behaviors with respect to 40-bit encryption. The MSDN topic &amp;quot;Salt Value Functionality&amp;quot; explains this:&lt;br&gt; &lt;br&gt;=== begin quote====&lt;br&gt;The Base Provider creates 40-bit symmetric keys created with eleven bytes of zero-value salt, eleven bytes of nonzero salt if CRYPT&lt;i&gt;CREATE&lt;/i&gt;SALT is specified, or no salt value. A 40-bit symmetric key with zero-value salt, however, is not equivalent to a 40-bit symmetric key without salt. For interoperability, keys must be created without salt. This problem results from a default condition that occurs only with keys of exactly 40 bits. All other key lengths do not have salt allocated by default.&lt;br&gt; &lt;br&gt;Both the Base Providers and the Extended Provider can use the CRYPT&lt;i&gt;NO&lt;/i&gt;SALT flag to specify that no salt value is allocated for a 40-bit symmetric key. The functions that accept this flag are CryptGenKey, CryptDeriveKey, and CryptImportKey. By default, these functions provide backward compatibility for the 40-bit symmetric key case by continuing the use of the eleven-byte-long zero-value salt.&lt;br&gt;=== end quote =====&lt;br&gt; &lt;br&gt;1/9/09 - Made a minor tweak to RC4Native::ImportKey to make the above explicit. Comments from the code:&lt;br&gt; &lt;br&gt;   // This step makes explicit what the Microsoft implementation of RC4 is really doing, unless&lt;br&gt;   // CRYPT&lt;i&gt;NO&lt;/i&gt;SALT flag is set. Essentially, there's a 128-bit key, just that the last 88 bits&lt;br&gt;   // are all 0. Unfortunately, there is no standard for RC4, which is part of why this happens.&lt;br&gt;   if( cbKeyData == 5 )&lt;br&gt;      *pcbKeyData = 16;&lt;br&gt; &lt;br&gt;So essentially, a PLAINTEXTBLOB for 40-bit RC4 is exactly the same if:&lt;br&gt;a) Data size = 5&lt;br&gt;b) Data size = 16 AND the last 11 bytes are 0&lt;br&gt; &lt;br&gt;This project is needed in order to use the CapiRC4Encrypt project.&lt;br&gt; &lt;br&gt;Note - this was just updated to use CryptImportKey, instead of CryptDeriveKey - removes one more layer of the CAPI calls.&lt;br&gt; &lt;br&gt;2/6 - Minor bug fix for Legacy RC4 example&lt;br&gt; &lt;br&gt;
&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Fri, 06 Feb 2009 09:02:36 GMT</pubDate><guid isPermaLink="false">Updated Release: ManagedRC4 (Jan 08, 2009) 20090206090236A</guid></item><item><title>Released: ManagedRC4 (Jan 08, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=21506</link><description>&lt;div&gt;
This project is to get around the issue that RC4 is not available in .NET. It isn't a fully featured RC4 wrapper, but it is enough to illustrate the concepts. &lt;br&gt; &lt;br&gt;An issue worth mentioning here is that CryptDeriveKey and CryptImportKey have some special behaviors with respect to 40-bit encryption. The MSDN topic &amp;quot;Salt Value Functionality&amp;quot; explains this:&lt;br&gt; &lt;br&gt;=== begin quote====&lt;br&gt;The Base Provider creates 40-bit symmetric keys created with eleven bytes of zero-value salt, eleven bytes of nonzero salt if CRYPT&lt;i&gt;CREATE&lt;/i&gt;SALT is specified, or no salt value. A 40-bit symmetric key with zero-value salt, however, is not equivalent to a 40-bit symmetric key without salt. For interoperability, keys must be created without salt. This problem results from a default condition that occurs only with keys of exactly 40 bits. All other key lengths do not have salt allocated by default.&lt;br&gt; &lt;br&gt;Both the Base Providers and the Extended Provider can use the CRYPT&lt;i&gt;NO&lt;/i&gt;SALT flag to specify that no salt value is allocated for a 40-bit symmetric key. The functions that accept this flag are CryptGenKey, CryptDeriveKey, and CryptImportKey. By default, these functions provide backward compatibility for the 40-bit symmetric key case by continuing the use of the eleven-byte-long zero-value salt.&lt;br&gt;=== end quote =====&lt;br&gt; &lt;br&gt;1/9/09 - Made a minor tweak to RC4Native::ImportKey to make the above explicit. Comments from the code:&lt;br&gt; &lt;br&gt;   // This step makes explicit what the Microsoft implementation of RC4 is really doing, unless&lt;br&gt;   // CRYPT&lt;i&gt;NO&lt;/i&gt;SALT flag is set. Essentially, there's a 128-bit key, just that the last 88 bits&lt;br&gt;   // are all 0. Unfortunately, there is no standard for RC4, which is part of why this happens.&lt;br&gt;   if( cbKeyData == 5 )&lt;br&gt;      *pcbKeyData = 16;&lt;br&gt; &lt;br&gt;So essentially, a PLAINTEXTBLOB for 40-bit RC4 is exactly the same if:&lt;br&gt;a) Data size = 5&lt;br&gt;b) Data size = 16 AND the last 11 bytes are 0&lt;br&gt; &lt;br&gt;This project is needed in order to use the CapiRC4Encrypt project.&lt;br&gt; &lt;br&gt;Note - this was just updated to use CryptImportKey, instead of CryptDeriveKey - removes one more layer of the CAPI calls.&lt;br&gt; &lt;br&gt;2/6 - Minor bug fix for Legacy RC4 example&lt;br&gt; &lt;br&gt;
&lt;/div&gt;</description><author></author><pubDate>Fri, 06 Feb 2009 09:02:35 GMT</pubDate><guid isPermaLink="false">Released: ManagedRC4 (Jan 08, 2009) 20090206090235A</guid></item><item><title>Updated Release: ManagedRC4 (Jan 08, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=21506</link><description>&lt;div&gt;
This project is to get around the issue that RC4 is not available in .NET. It isn't a fully featured RC4 wrapper, but it is enough to illustrate the concepts. One limitation is that it does not load the CAPI provider which gives you 128-bit encryption - the default for this encryption approach is 40-bit, which works just fine.&lt;br&gt; &lt;br&gt;An issue worth mentioning here is that CryptDeriveKey and CryptImportKey have some special behaviors with respect to 40-bit encryption. The MSDN topic &amp;quot;Salt Value Functionality&amp;quot; explains this:&lt;br&gt; &lt;br&gt;=== begin quote====&lt;br&gt;The Base Provider creates 40-bit symmetric keys created with eleven bytes of zero-value salt, eleven bytes of nonzero salt if CRYPT&lt;i&gt;CREATE&lt;/i&gt;SALT is specified, or no salt value. A 40-bit symmetric key with zero-value salt, however, is not equivalent to a 40-bit symmetric key without salt. For interoperability, keys must be created without salt. This problem results from a default condition that occurs only with keys of exactly 40 bits. All other key lengths do not have salt allocated by default.&lt;br&gt; &lt;br&gt;Both the Base Providers and the Extended Provider can use the CRYPT&lt;i&gt;NO&lt;/i&gt;SALT flag to specify that no salt value is allocated for a 40-bit symmetric key. The functions that accept this flag are CryptGenKey, CryptDeriveKey, and CryptImportKey. By default, these functions provide backward compatibility for the 40-bit symmetric key case by continuing the use of the eleven-byte-long zero-value salt.&lt;br&gt;=== end quote =====&lt;br&gt; &lt;br&gt;1/9/09 - Made a minor tweak to RC4Native::ImportKey to make the above explicit. Comments from the code:&lt;br&gt; &lt;br&gt;   // This step makes explicit what the Microsoft implementation of RC4 is really doing, unless&lt;br&gt;   // CRYPT&lt;i&gt;NO&lt;/i&gt;SALT flag is set. Essentially, there's a 128-bit key, just that the last 88 bits&lt;br&gt;   // are all 0. Unfortunately, there is no standard for RC4, which is part of why this happens.&lt;br&gt;   if( cbKeyData == 5 )&lt;br&gt;      *pcbKeyData = 16;&lt;br&gt; &lt;br&gt;So essentially, a PLAINTEXTBLOB for 40-bit RC4 is exactly the same if:&lt;br&gt;a) Data size = 5&lt;br&gt;b) Data size = 16 AND the last 11 bytes are 0&lt;br&gt; &lt;br&gt;This project is needed in order to use the CapiRC4Encrypt project.&lt;br&gt; &lt;br&gt;Note - this was just updated to use CryptImportKey, instead of CryptDeriveKey - removes one more layer of the CAPI calls.&lt;br&gt; &lt;br&gt;2/6 - Minor bug fix for Legacy RC4 example&lt;br&gt; &lt;br&gt;
&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Fri, 06 Feb 2009 09:01:12 GMT</pubDate><guid isPermaLink="false">Updated Release: ManagedRC4 (Jan 08, 2009) 20090206090112A</guid></item><item><title>Updated Release: Legacy RC4 (Feb 06, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=22783</link><description>&lt;div&gt;
Demonstrates the legacy RC4 encryption technique. Files include:&lt;br&gt; &lt;br&gt;LegacyRC4.cs - source code to verify the header.&lt;br&gt;password_dump.txt - notes on the intermediate hash results for the password.doc file&lt;br&gt;password.doc - a 40-bit RC4 encrypted document with a password of (you guessed it) 'password'&lt;br&gt;
&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Fri, 06 Feb 2009 08:58:09 GMT</pubDate><guid isPermaLink="false">Updated Release: Legacy RC4 (Feb 06, 2009) 20090206085809A</guid></item><item><title>Released: Legacy RC4 (Feb 06, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=22783</link><description>&lt;div&gt;
Demonstrates the legacy RC4 encryption technique. Files include:&lt;br&gt; &lt;br&gt;LegacyRC4.cs - source code to verify the header.&lt;br&gt;password_dump.txt - notes on the intermediate hash results for the password.doc file&lt;br&gt;password.doc - a 40-bit RC4 encrypted document with a password of (you guessed it) 'password'&lt;br&gt;
&lt;/div&gt;</description><author></author><pubDate>Fri, 06 Feb 2009 08:58:08 GMT</pubDate><guid isPermaLink="false">Released: Legacy RC4 (Feb 06, 2009) 20090206085808A</guid></item><item><title>Created Release: Legacy RC4 (Feb 06, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=22783</link><description>&lt;div&gt;
Demonstrates the legacy RC4 encryption technique. &lt;br&gt;
&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Fri, 06 Feb 2009 08:54:17 GMT</pubDate><guid isPermaLink="false">Created Release: Legacy RC4 (Feb 06, 2009) 20090206085417A</guid></item><item><title>Updated Release: ManagedRC4 (Jan 08, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=21506</link><description>&lt;div&gt;
This project is to get around the issue that RC4 is not available in .NET. It isn't a fully featured RC4 wrapper, but it is enough to illustrate the concepts. One limitation is that it does not load the CAPI provider which gives you 128-bit encryption - the default for this encryption approach is 40-bit, which works just fine.&lt;br&gt; &lt;br&gt;An issue worth mentioning here is that CryptDeriveKey and CryptImportKey have some special behaviors with respect to 40-bit encryption. The MSDN topic &amp;quot;Salt Value Functionality&amp;quot; explains this:&lt;br&gt; &lt;br&gt;=== begin quote====&lt;br&gt;The Base Provider creates 40-bit symmetric keys created with eleven bytes of zero-value salt, eleven bytes of nonzero salt if CRYPT&lt;i&gt;CREATE&lt;/i&gt;SALT is specified, or no salt value. A 40-bit symmetric key with zero-value salt, however, is not equivalent to a 40-bit symmetric key without salt. For interoperability, keys must be created without salt. This problem results from a default condition that occurs only with keys of exactly 40 bits. All other key lengths do not have salt allocated by default.&lt;br&gt; &lt;br&gt;Both the Base Providers and the Extended Provider can use the CRYPT&lt;i&gt;NO&lt;/i&gt;SALT flag to specify that no salt value is allocated for a 40-bit symmetric key. The functions that accept this flag are CryptGenKey, CryptDeriveKey, and CryptImportKey. By default, these functions provide backward compatibility for the 40-bit symmetric key case by continuing the use of the eleven-byte-long zero-value salt.&lt;br&gt;=== end quote =====&lt;br&gt; &lt;br&gt;1/9/09 - Made a minor tweak to RC4Native::ImportKey to make the above explicit. Comments from the code:&lt;br&gt; &lt;br&gt;   // This step makes explicit what the Microsoft implementation of RC4 is really doing, unless&lt;br&gt;   // CRYPT&lt;i&gt;NO&lt;/i&gt;SALT flag is set. Essentially, there's a 128-bit key, just that the last 88 bits&lt;br&gt;   // are all 0. Unfortunately, there is no standard for RC4, which is part of why this happens.&lt;br&gt;   if( cbKeyData == 5 )&lt;br&gt;      *pcbKeyData = 16;&lt;br&gt; &lt;br&gt;So essentially, a PLAINTEXTBLOB for 40-bit RC4 is exactly the same if:&lt;br&gt;a) Data size = 5&lt;br&gt;b) Data size = 16 AND the last 11 bytes are 0&lt;br&gt; &lt;br&gt;This project is needed in order to use the CapiRC4Encrypt project.&lt;br&gt; &lt;br&gt;Note - this was just updated to use CryptImportKey, instead of CryptDeriveKey - removes one more layer of the CAPI calls.&lt;br&gt; &lt;br&gt;
&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Fri, 09 Jan 2009 19:11:47 GMT</pubDate><guid isPermaLink="false">Updated Release: ManagedRC4 (Jan 08, 2009) 20090109071147P</guid></item><item><title>Released: ManagedRC4 (Jan 08, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=21506</link><description>&lt;div&gt;
This project is to get around the issue that RC4 is not available in .NET. It isn't a fully featured RC4 wrapper, but it is enough to illustrate the concepts. One limitation is that it does not load the CAPI provider which gives you 128-bit encryption - the default for this encryption approach is 40-bit, which works just fine.&lt;br&gt; &lt;br&gt;An issue worth mentioning here is that CryptDeriveKey and CryptImportKey have some special behaviors with respect to 40-bit encryption. The MSDN topic &amp;quot;Salt Value Functionality&amp;quot; explains this:&lt;br&gt; &lt;br&gt;=== begin quote====&lt;br&gt;The Base Provider creates 40-bit symmetric keys created with eleven bytes of zero-value salt, eleven bytes of nonzero salt if CRYPT&lt;i&gt;CREATE&lt;/i&gt;SALT is specified, or no salt value. A 40-bit symmetric key with zero-value salt, however, is not equivalent to a 40-bit symmetric key without salt. For interoperability, keys must be created without salt. This problem results from a default condition that occurs only with keys of exactly 40 bits. All other key lengths do not have salt allocated by default.&lt;br&gt; &lt;br&gt;Both the Base Providers and the Extended Provider can use the CRYPT&lt;i&gt;NO&lt;/i&gt;SALT flag to specify that no salt value is allocated for a 40-bit symmetric key. The functions that accept this flag are CryptGenKey, CryptDeriveKey, and CryptImportKey. By default, these functions provide backward compatibility for the 40-bit symmetric key case by continuing the use of the eleven-byte-long zero-value salt.&lt;br&gt;=== end quote =====&lt;br&gt; &lt;br&gt;1/9/09 - Made a minor tweak to RC4Native::ImportKey to make the above explicit. Comments from the code:&lt;br&gt; &lt;br&gt;   // This step makes explicit what the Microsoft implementation of RC4 is really doing, unless&lt;br&gt;   // CRYPT&lt;i&gt;NO&lt;/i&gt;SALT flag is set. Essentially, there's a 128-bit key, just that the last 88 bits&lt;br&gt;   // are all 0. Unfortunately, there is no standard for RC4, which is part of why this happens.&lt;br&gt;   if( cbKeyData == 5 )&lt;br&gt;      *pcbKeyData = 16;&lt;br&gt; &lt;br&gt;So essentially, a PLAINTEXTBLOB for 40-bit RC4 is exactly the same if:&lt;br&gt;a) Data size = 5&lt;br&gt;b) Data size = 16 AND the last 11 bytes are 0&lt;br&gt; &lt;br&gt;This project is needed in order to use the CapiRC4Encrypt project.&lt;br&gt; &lt;br&gt;Note - this was just updated to use CryptImportKey, instead of CryptDeriveKey - removes one more layer of the CAPI calls.&lt;br&gt; &lt;br&gt;
&lt;/div&gt;</description><author></author><pubDate>Fri, 09 Jan 2009 19:11:45 GMT</pubDate><guid isPermaLink="false">Released: ManagedRC4 (Jan 08, 2009) 20090109071145P</guid></item><item><title>Updated Release: ManagedRC4 (Jan 08, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=21506</link><description>&lt;div&gt;
This project is to get around the issue that RC4 is not available in .NET. It isn't a fully featured RC4 wrapper, but it is enough to illustrate the concepts. One limitation is that it does not load the CAPI provider which gives you 128-bit encryption - the default for this encryption approach is 40-bit, which works just fine.&lt;br&gt; &lt;br&gt;An issue worth mentioning here is that CryptDeriveKey and CryptImportKey have some special behaviors with respect to 40-bit encryption. The MSDN topic &amp;quot;Salt Value Functionality&amp;quot; explains this:&lt;br&gt; &lt;br&gt;=== begin quote====&lt;br&gt;The Base Provider creates 40-bit symmetric keys created with eleven bytes of zero-value salt, eleven bytes of nonzero salt if CRYPT&lt;i&gt;CREATE&lt;/i&gt;SALT is specified, or no salt value. A 40-bit symmetric key with zero-value salt, however, is not equivalent to a 40-bit symmetric key without salt. For interoperability, keys must be created without salt. This problem results from a default condition that occurs only with keys of exactly 40 bits. All other key lengths do not have salt allocated by default.&lt;br&gt; &lt;br&gt;Both the Base Providers and the Extended Provider can use the CRYPT&lt;i&gt;NO&lt;/i&gt;SALT flag to specify that no salt value is allocated for a 40-bit symmetric key. The functions that accept this flag are CryptGenKey, CryptDeriveKey, and CryptImportKey. By default, these functions provide backward compatibility for the 40-bit symmetric key case by continuing the use of the eleven-byte-long zero-value salt.&lt;br&gt;=== end quote =====&lt;br&gt; &lt;br&gt;This project is needed in order to use the CapiRC4Encrypt project.&lt;br&gt; &lt;br&gt;Note - this was just updated to use CryptImportKey, instead of CryptDeriveKey - removes one more layer of the CAPI calls.&lt;br&gt; &lt;br&gt;
&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Thu, 08 Jan 2009 23:03:43 GMT</pubDate><guid isPermaLink="false">Updated Release: ManagedRC4 (Jan 08, 2009) 20090108110343P</guid></item><item><title>Released: ManagedRC4 (Jan 08, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=21506</link><description>&lt;div&gt;
This project is to get around the issue that RC4 is not available in .NET. It isn't a fully featured RC4 wrapper, but it is enough to illustrate the concepts. One limitation is that it does not load the CAPI provider which gives you 128-bit encryption - the default for this encryption approach is 40-bit, which works just fine.&lt;br&gt; &lt;br&gt;An issue worth mentioning here is that CryptDeriveKey and CryptImportKey have some special behaviors with respect to 40-bit encryption. The MSDN topic &amp;quot;Salt Value Functionality&amp;quot; explains this:&lt;br&gt; &lt;br&gt;=== begin quote====&lt;br&gt;The Base Provider creates 40-bit symmetric keys created with eleven bytes of zero-value salt, eleven bytes of nonzero salt if CRYPT&lt;i&gt;CREATE&lt;/i&gt;SALT is specified, or no salt value. A 40-bit symmetric key with zero-value salt, however, is not equivalent to a 40-bit symmetric key without salt. For interoperability, keys must be created without salt. This problem results from a default condition that occurs only with keys of exactly 40 bits. All other key lengths do not have salt allocated by default.&lt;br&gt; &lt;br&gt;Both the Base Providers and the Extended Provider can use the CRYPT&lt;i&gt;NO&lt;/i&gt;SALT flag to specify that no salt value is allocated for a 40-bit symmetric key. The functions that accept this flag are CryptGenKey, CryptDeriveKey, and CryptImportKey. By default, these functions provide backward compatibility for the 40-bit symmetric key case by continuing the use of the eleven-byte-long zero-value salt.&lt;br&gt;=== end quote =====&lt;br&gt; &lt;br&gt;This project is needed in order to use the CapiRC4Encrypt project.&lt;br&gt; &lt;br&gt;Note - this was just updated to use CryptImportKey, instead of CryptDeriveKey - removes one more layer of the CAPI calls.&lt;br&gt; &lt;br&gt;
&lt;/div&gt;</description><author></author><pubDate>Thu, 08 Jan 2009 23:03:41 GMT</pubDate><guid isPermaLink="false">Released: ManagedRC4 (Jan 08, 2009) 20090108110341P</guid></item><item><title>Updated Release: ManagedRC4 (Jan 08, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=21506</link><description>&lt;div&gt;
This project is to get around the issue that RC4 is not available in .NET. It isn't a fully featured RC4 wrapper, but it is enough to illustrate the concepts. One limitation is that it does not load the CAPI provider which gives you 128-bit encryption - the default for this encryption approach is 40-bit, which works just fine.&lt;br&gt; &lt;br&gt;An issue worth mentioning here is that CryptDeriveKey has some special behaviors with respect to 40-bit encryption. The MSDN topic &amp;quot;Salt Value Functionality&amp;quot; explains this:&lt;br&gt; &lt;br&gt;=== begin quote====&lt;br&gt;The Base Provider creates 40-bit symmetric keys created with eleven bytes of zero-value salt, eleven bytes of nonzero salt if CRYPT&lt;i&gt;CREATE&lt;/i&gt;SALT is specified, or no salt value. A 40-bit symmetric key with zero-value salt, however, is not equivalent to a 40-bit symmetric key without salt. For interoperability, keys must be created without salt. This problem results from a default condition that occurs only with keys of exactly 40 bits. All other key lengths do not have salt allocated by default.&lt;br&gt; &lt;br&gt;Both the Base Providers and the Extended Provider can use the CRYPT&lt;i&gt;NO&lt;/i&gt;SALT flag to specify that no salt value is allocated for a 40-bit symmetric key. The functions that accept this flag are CryptGenKey, CryptDeriveKey, and CryptImportKey. By default, these functions provide backward compatibility for the 40-bit symmetric key case by continuing the use of the eleven-byte-long zero-value salt.&lt;br&gt;=== end quote =====&lt;br&gt; &lt;br&gt;This project is needed in order to use the CapiRC4Encrypt project.&lt;br&gt; &lt;br&gt;Note - this was just updated to use CryptImportKey, instead of CryptDeriveKey - removes one more layer of the CAPI calls.&lt;br&gt; &lt;br&gt;
&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Thu, 08 Jan 2009 23:02:05 GMT</pubDate><guid isPermaLink="false">Updated Release: ManagedRC4 (Jan 08, 2009) 20090108110205P</guid></item><item><title>Updated Release: CapiRC4Encrypt (Jan 08, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=21507</link><description>&lt;div&gt;
This code demonstrates parsing an EncryptionInfo struct generated by a PowerPoint file. It depends on the ManagedRC4 project.&lt;br&gt; &lt;br&gt;Also attached are the extracted stream used in this demo - note that there is a hard-coded offset in the Main function - if you want to use a different source file, you'll need to change the offset. The password for the file is 'password'.&lt;br&gt; &lt;br&gt;Note - I just updated this to use CryptImportKey instead of CryptDeriveKey - this takes one layer of the black box out of the equation.&lt;br&gt; &lt;br&gt;
&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Thu, 08 Jan 2009 23:00:25 GMT</pubDate><guid isPermaLink="false">Updated Release: CapiRC4Encrypt (Jan 08, 2009) 20090108110025P</guid></item><item><title>Released: CapiRC4Encrypt (Jan 08, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=21507</link><description>&lt;div&gt;
This code demonstrates parsing an EncryptionInfo struct generated by a PowerPoint file. It depends on the ManagedRC4 project.&lt;br&gt; &lt;br&gt;Also attached are the extracted stream used in this demo - note that there is a hard-coded offset in the Main function - if you want to use a different source file, you'll need to change the offset. The password for the file is 'password'.&lt;br&gt; &lt;br&gt;Note - I just updated this to use CryptImportKey instead of CryptDeriveKey - this takes one layer of the black box out of the equation.&lt;br&gt; &lt;br&gt;
&lt;/div&gt;</description><author></author><pubDate>Thu, 08 Jan 2009 23:00:23 GMT</pubDate><guid isPermaLink="false">Released: CapiRC4Encrypt (Jan 08, 2009) 20090108110023P</guid></item><item><title>Created Release: CapiRC4Encrypt (Jan 08, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=21507</link><description>&lt;div&gt;
This code demonstrates parsing an EncryptionInfo struct generated by a PowerPoint file. It depends on the ManagedRC4 project.&lt;br&gt; &lt;br&gt;Also attached are the extracted stream used in this demo - note that there is a hard-coded offset in the Main function - if you want to use a different source file, you'll need to change the offset. The password for the file is 'password'.&lt;br&gt; &lt;br&gt;
&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Thu, 08 Jan 2009 16:57:59 GMT</pubDate><guid isPermaLink="false">Created Release: CapiRC4Encrypt (Jan 08, 2009) 20090108045759P</guid></item><item><title>Released: CapiRC4Encrypt (Jan 08, 2009)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=21507</link><description>&lt;div&gt;
This code demonstrates parsing an EncryptionInfo struct generated by a PowerPoint file. It depends on the ManagedRC4 project.&lt;br&gt; &lt;br&gt;Also attached are the extracted stream used in this demo - note that there is a hard-coded offset in the Main function - if you want to use a different source file, you'll need to change the offset. The password for the file is 'password'.&lt;br&gt; &lt;br&gt;
&lt;/div&gt;</description><author></author><pubDate>Thu, 08 Jan 2009 16:57:55 GMT</pubDate><guid isPermaLink="false">Released: CapiRC4Encrypt (Jan 08, 2009) 20090108045755P</guid></item><item><title>Updated Release: OoxmlEncrypt (Dec 21, 2008)</title><link>http://www.codeplex.com/offcrypto/Release/ProjectReleases.aspx?ReleaseId=20832</link><description>&lt;div&gt;
OoxmlEncrypt demonstrated how to verify the EncryptionInfo stream, which is specified in MS-OFFCRYPTO. The input files are generated using ExtractStream.&lt;br&gt;
&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Thu, 08 Jan 2009 16:40:57 GMT</pubDate><guid isPermaLink="false">Updated Release: OoxmlEncrypt (Dec 21, 2008) 20090108044057P</guid></item></channel></rss>