<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Windows Crypto &amp; ippsRijndael128EncryptCBC in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945790#M18136</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;I'm developping a Windows application that relies on AES 128 CBC algorithm and I'm considering both OpenSSL &amp;amp; IPP implementations !&amp;nbsp; To that purpose I'm testing the following Windows IPP Crypto 7 code provided in &lt;A href="http://software.intel.com/sites/default/files/article/181895/intelcrypt710.pdf" target="_blank"&gt;http://software.intel.com/sites/default/files/article/181895/intelcrypt710.pdf&lt;/A&gt; (page 16) compiled with visual studio 10.0 ....&lt;/P&gt;
&lt;P&gt;const int blkSize = 16; // block size&lt;BR /&gt;int ctxSize; // context size&lt;BR /&gt;ippsRijndael128GetSize(&amp;amp;ctxSize); // evaluating context size&lt;BR /&gt;IppsRijndael128Spec* ctx = (IppsRijndael128Spec*)( new Ipp8u [ctxSize] );&lt;BR /&gt;Ipp8u key[16] = {0xff,0xee,0xdd,0xcc,0xbb,0xaa,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00};&lt;BR /&gt;ippsRijndael128Init(key,IppsRijndaelKey128,ctx);//128-bit key&lt;BR /&gt;Ipp8u plain[] = "Rijndael-128 Cipher Block Chaining mode";&lt;BR /&gt;Ipp8u ciph[(sizeof(plain)+blkSize-1) &amp;amp;~(blkSize-1)];&lt;BR /&gt;Ipp8u iv[blkSize] = {0x0f,0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00};&lt;BR /&gt;ippsRijndael128EncryptCBC(plain,ciph,sizeof(plain),ctx,iv,IppsCPPaddingNONE);&lt;BR /&gt;Ipp8u deciph[sizeof(ciph)];&lt;BR /&gt;ippsRijndael128DecryptCBC(ciph,deciph,sizeof(ciph),ctx,iv,IppsCPPaddingNONE);&lt;BR /&gt;cout &amp;lt;&amp;lt;"Decrypted text: "&amp;lt;&amp;lt; deciph &amp;lt;&amp;lt; endl;&lt;BR /&gt;delete (Ipp8u*) ctx;&lt;/P&gt;
&lt;P&gt;and I'm confused&amp;nbsp; plaintext &amp;amp; deciph text are not the same ! what's wrong ? where is (are) my mistake(s) ?&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Plain text: Rijndael-128 Cipher Block Chaining mode&lt;BR /&gt;IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (40)&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000000: 52 69 6a 6e 64 61 65 6c 2d 31 32 38 20 43 69 70&amp;nbsp; Rijndael-128 Cip&lt;BR /&gt;IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (40)&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000010: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc&amp;nbsp; ................&lt;BR /&gt;IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (40)&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000020: cc cc cc cc cc cc cc cc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ........&lt;BR /&gt;Decrypted text: xµ-gEÅ§!4♥M└¥?‗ä╗$ýºéI0Õ&amp;nbsp;╔q±?H╗$ýºéI0Õ&amp;nbsp;╔q±?H╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠►hG&lt;BR /&gt;OUT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (48)&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000000: 78 e6 2d 67 45 8f f5 21 34 03 4d c0 be 3f f2 84&amp;nbsp; x.-gE..!4.M..?..&lt;BR /&gt;OUT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (48)&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000010: cc cc cc cc cc cc cc cc 10 68 47 00 00 00 00 00&amp;nbsp; .........hG.....&lt;BR /&gt;OUT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (48)&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000020: cc cc cc cc cc cc cc cc fe b5 3c fb f7 be 00 00&amp;nbsp; ..........&amp;lt;.....&lt;/P&gt;
&lt;P&gt;second question : in case we consider CBC &amp;amp; Padding (such PK7 for instance) how to retreive the real deciph buffer size I mean the plain text size ??&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
    <pubDate>Fri, 09 Nov 2012 13:58:34 GMT</pubDate>
    <dc:creator>lionel_carminati</dc:creator>
    <dc:date>2012-11-09T13:58:34Z</dc:date>
    <item>
      <title>Windows Crypto &amp; ippsRijndael128EncryptCBC</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945790#M18136</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;I'm developping a Windows application that relies on AES 128 CBC algorithm and I'm considering both OpenSSL &amp;amp; IPP implementations !&amp;nbsp; To that purpose I'm testing the following Windows IPP Crypto 7 code provided in &lt;A href="http://software.intel.com/sites/default/files/article/181895/intelcrypt710.pdf" target="_blank"&gt;http://software.intel.com/sites/default/files/article/181895/intelcrypt710.pdf&lt;/A&gt; (page 16) compiled with visual studio 10.0 ....&lt;/P&gt;
&lt;P&gt;const int blkSize = 16; // block size&lt;BR /&gt;int ctxSize; // context size&lt;BR /&gt;ippsRijndael128GetSize(&amp;amp;ctxSize); // evaluating context size&lt;BR /&gt;IppsRijndael128Spec* ctx = (IppsRijndael128Spec*)( new Ipp8u [ctxSize] );&lt;BR /&gt;Ipp8u key[16] = {0xff,0xee,0xdd,0xcc,0xbb,0xaa,0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00};&lt;BR /&gt;ippsRijndael128Init(key,IppsRijndaelKey128,ctx);//128-bit key&lt;BR /&gt;Ipp8u plain[] = "Rijndael-128 Cipher Block Chaining mode";&lt;BR /&gt;Ipp8u ciph[(sizeof(plain)+blkSize-1) &amp;amp;~(blkSize-1)];&lt;BR /&gt;Ipp8u iv[blkSize] = {0x0f,0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00};&lt;BR /&gt;ippsRijndael128EncryptCBC(plain,ciph,sizeof(plain),ctx,iv,IppsCPPaddingNONE);&lt;BR /&gt;Ipp8u deciph[sizeof(ciph)];&lt;BR /&gt;ippsRijndael128DecryptCBC(ciph,deciph,sizeof(ciph),ctx,iv,IppsCPPaddingNONE);&lt;BR /&gt;cout &amp;lt;&amp;lt;"Decrypted text: "&amp;lt;&amp;lt; deciph &amp;lt;&amp;lt; endl;&lt;BR /&gt;delete (Ipp8u*) ctx;&lt;/P&gt;
&lt;P&gt;and I'm confused&amp;nbsp; plaintext &amp;amp; deciph text are not the same ! what's wrong ? where is (are) my mistake(s) ?&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Plain text: Rijndael-128 Cipher Block Chaining mode&lt;BR /&gt;IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (40)&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000000: 52 69 6a 6e 64 61 65 6c 2d 31 32 38 20 43 69 70&amp;nbsp; Rijndael-128 Cip&lt;BR /&gt;IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (40)&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000010: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc&amp;nbsp; ................&lt;BR /&gt;IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (40)&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000020: cc cc cc cc cc cc cc cc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ........&lt;BR /&gt;Decrypted text: xµ-gEÅ§!4♥M└¥?‗ä╗$ýºéI0Õ&amp;nbsp;╔q±?H╗$ýºéI0Õ&amp;nbsp;╔q±?H╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠►hG&lt;BR /&gt;OUT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (48)&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000000: 78 e6 2d 67 45 8f f5 21 34 03 4d c0 be 3f f2 84&amp;nbsp; x.-gE..!4.M..?..&lt;BR /&gt;OUT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (48)&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000010: cc cc cc cc cc cc cc cc 10 68 47 00 00 00 00 00&amp;nbsp; .........hG.....&lt;BR /&gt;OUT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (48)&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000020: cc cc cc cc cc cc cc cc fe b5 3c fb f7 be 00 00&amp;nbsp; ..........&amp;lt;.....&lt;/P&gt;
&lt;P&gt;second question : in case we consider CBC &amp;amp; Padding (such PK7 for instance) how to retreive the real deciph buffer size I mean the plain text size ??&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 09 Nov 2012 13:58:34 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945790#M18136</guid>
      <dc:creator>lionel_carminati</dc:creator>
      <dc:date>2012-11-09T13:58:34Z</dc:date>
    </item>
    <item>
      <title>...</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945791#M18137</link>
      <description>...
ippsRijndael128DecryptCBC( ciph, deciph, ??? sizeof(ciph) ???, ctx, iv, IppsCPPaddingNONE );
...
Could you verify the actual length of encrypted text with the length of the 3rd parameter 'sizeof(ciph)'?</description>
      <pubDate>Fri, 09 Nov 2012 14:43:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945791#M18137</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-11-09T14:43:54Z</dc:date>
    </item>
    <item>
      <title>sizeof(plain) == 40,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945792#M18138</link>
      <description>sizeof(plain) == 40, 
sizeof(ciph) == 48, 
sizeof(deciph) == 48</description>
      <pubDate>Fri, 09 Nov 2012 15:13:17 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945792#M18138</guid>
      <dc:creator>lionel_carminati</dc:creator>
      <dc:date>2012-11-09T15:13:17Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;...sizeof(ciph) == 48</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945793#M18139</link>
      <description>&amp;gt;&amp;gt;...sizeof(ciph) == 48

This is an example that demonstrates the sizeof and actual length of some data could be different:
...
chat szData[48];
strcpy( szData, "1234567" );
int iLen1 = sizeof( szData / szData[0] );
int iLen2 = strlen( &amp;amp;szData[0] );
...</description>
      <pubDate>Thu, 15 Nov 2012 14:36:37 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945793#M18139</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-11-15T14:36:37Z</dc:date>
    </item>
    <item>
      <title>Hello Lionel</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945794#M18140</link>
      <description>Hello Lionel
In the example in our book  the plain text is:

Ipp8u plain[] = "Rijndael-128 Cipher Block Chaining mode        ";

With 8 trailing spaces at the end which are invisible in this post (compare pdf)
Your code with this improvement works for me.

Andrzej Chrzeszczyk</description>
      <pubDate>Thu, 15 Nov 2012 21:55:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945794#M18140</guid>
      <dc:creator>Andrzej_Chrzeszczyk</dc:creator>
      <dc:date>2012-11-15T21:55:00Z</dc:date>
    </item>
    <item>
      <title>Hi everybody,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945795#M18141</link>
      <description>Hi everybody,

&amp;gt;&amp;gt;...In the example in our book...

What book are you talking about?</description>
      <pubDate>Fri, 16 Nov 2012 01:18:30 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945795#M18141</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-11-16T01:18:30Z</dc:date>
    </item>
    <item>
      <title>Hi Sergey</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945796#M18142</link>
      <description>Hi Sergey
I mean the book IPP Crypto Guide  mentioned by Lionel

&lt;A href="http://software.intel.com/sites/default/files/article/181895/intelcrypt710.pdf" target="_blank"&gt;http://software.intel.com/sites/default/files/article/181895/intelcrypt710.pdf&lt;/A&gt;

It can be downloaded from

&lt;A href="http://software.intel.com/en-us/articles/ipp-crypto-guide" target="_blank"&gt;http://software.intel.com/en-us/articles/ipp-crypto-guide&lt;/A&gt;

A Ch</description>
      <pubDate>Fri, 16 Nov 2012 06:21:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945796#M18142</guid>
      <dc:creator>Andrzej_Chrzeszczyk</dc:creator>
      <dc:date>2012-11-16T06:21:39Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;I mean the book IPP Crypto</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945797#M18143</link>
      <description>&amp;gt;&amp;gt;I mean the book IPP Crypto Guide mentioned by Lionel
&amp;gt;&amp;gt;http://software.intel.com/sites/default/files/article/181895/intelcrypt7...
&amp;gt;&amp;gt;
&amp;gt;&amp;gt;It can be downloaded from
&amp;gt;&amp;gt;&lt;A href="http://software.intel.com/en-us/articles/ipp-crypto-guide" target="_blank"&gt;http://software.intel.com/en-us/articles/ipp-crypto-guide&lt;/A&gt;

Thank you!</description>
      <pubDate>Fri, 16 Nov 2012 14:44:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Windows-Crypto-ippsRijndael128EncryptCBC/m-p/945797#M18143</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-11-16T14:44:54Z</dc:date>
    </item>
  </channel>
</rss>

