AES256decrypt and AES256encrypt (String functions): Difference between revisions
(Created page with "{{Template:String:AES256decrypt and AES256encrypt subtitle}} This page is under construction. ==Syntax== {{Template:String:AES256decrypt syntax}} {{Template:String:AES25...") |
m (add many details and example) |
||
Line 1: | Line 1: | ||
{{Template:String:AES256decrypt and AES256encrypt subtitle}} | {{Template:String:AES256decrypt and AES256encrypt subtitle}} | ||
<var>AES256decrypt</var> and <var>AES256encrypt</var> are synonyms for the [[String class]] function that applies the AES (Advanced Encryption Standard) using a 256-bit symmetric key to decrypt or encrypt each 128-bit block of input text. For more details about how the algorithm works, see [https://en.wikipedia.org/wiki/Advanced_Encryption_Standard Advanced Encryption Standard]. | |||
The length of the returned string is the same as that of the object string. | |||
AES is a two-way cipher, so encrypting a string with a key and then decrypting the result of that encryption with the same key produces the original string. That is, the following assertion should <b><i>always</i></b> hold: | |||
<p class="code">[[Assert statement|assert]] %string:aes256encrypt(%key):aes256decrypt(%key) eq %string | |||
</p> | |||
You can use <var>AES256decrypt</var> to "document" that you are decrypting, and | |||
use <var>AES256encrypt</var> to "document" that you are encrypting. You can use <var>AES256decrypt</var> and <var>AES256encrypt</var> interchangeably on the rest of this page. | |||
==Syntax== | ==Syntax== | ||
Line 9: | Line 17: | ||
===Syntax terms=== | ===Syntax terms=== | ||
<table> | <table> | ||
<tr><th>%outString</th><td>string</td></tr> | <tr><th>%outString</th> | ||
<td>A string variable to receive the encrypted or decrypted method object <var class="term">string</var>. Its length is the same as <var class="term">string</var>.</td></tr> | |||
<tr><th>string</th> | <tr><th>string</th> | ||
<td>string</td></tr> | <td>The string to which the method is applied. <var class="term">string</var> must be a multiple of sixteen bytes in length; its maximum is 32768 bytes. It may be null.</td></tr> | ||
<tr><th>key</th> | <tr><th>key</th> | ||
<td>string, | <td>A 32-byte (only) string variable whose value is used to encrypt or decrypt the method object, <var class="term">string</var>.</td></tr> | ||
</table> | </table> | ||
==Usage notes== | ==Usage notes== | ||
<ul> | |||
<li>You are <b><i>not</i></b> prevented from creating confusion by encrypting with <var>AES256decrypt</var> and decrypting with <var>AES256encrypt</var>. </li> | |||
<li>The <var>AES256decrypt</var> and <var>AES256encrypt</var> functions are available as of <var class="product">Model 204</var> 7.6. </li> | |||
</ul> | |||
==Examples== | ==Examples== | ||
In the following example, the output string from the <var>AES256encrypt</var> method is converted to hex using the <var>[[StringToHex (String function)|StringToHex]]</var> function to reveal its non-displayable characters, then decrypted to return the original input string: | |||
<p class="code">b | |||
%ls is longstring | |||
%string is longstring | |||
%key is string len 32 | |||
%string = 'onetwothreefour0onetwothreefour0' | |||
%key = '12345678161616162424242432323232' | |||
%ls = %string:aes256encrypt(%key) | |||
[[PrintText statement|printText]] {~} is {%ls:stringTohex} | |||
printText {~} is: {%ls:aes256decrypt(%key)} | |||
end | |||
</p> | |||
The result is: | |||
<p class="output">%ls:stringTohex is: 513D0D34ABD198699043708FB076EC71513D0D34ABD198699043708FB076EC71 | |||
%ls:aes256decrypt(%key) is: onetwothreefour0onetwothreefour0 | |||
</p> | |||
==See also== | ==See also== | ||
<ul> | |||
<li><var>[[AES128decrypt and AES128encrypt (String functions)]]</var> </li> | |||
<li><var>[[AES192decrypt and AES192encrypt (String functions)]]</var> </li> | |||
<li><var>[[AES128CBCdecrypt and AES128CBCencrypt (String functions)]]</var> </li> | |||
<li><var>[[AES192CBCdecrypt and AES192CBCencrypt (String functions)]]</var> </li> | |||
<li><var>[[AES256CBCdecrypt and AES256CBCencrypt (String functions)]]</var> </li> | |||
</ul> | |||
{{Template:String:AES256decrypt and AES256encrypt footer}} | {{Template:String:AES256decrypt and AES256encrypt footer}} |
Revision as of 22:55, 11 March 2016
AES256 encryption or decryption (String class)
[Introduced in Model 204 7.6]
AES256decrypt and AES256encrypt are synonyms for the String class function that applies the AES (Advanced Encryption Standard) using a 256-bit symmetric key to decrypt or encrypt each 128-bit block of input text. For more details about how the algorithm works, see Advanced Encryption Standard.
The length of the returned string is the same as that of the object string.
AES is a two-way cipher, so encrypting a string with a key and then decrypting the result of that encryption with the same key produces the original string. That is, the following assertion should always hold:
assert %string:aes256encrypt(%key):aes256decrypt(%key) eq %string
You can use AES256decrypt to "document" that you are decrypting, and use AES256encrypt to "document" that you are encrypting. You can use AES256decrypt and AES256encrypt interchangeably on the rest of this page.
Syntax
%outString = string:AES256decrypt( key) Throws UnsupportedCrypto, InvalidCryptoKey, InvalidCryptoData
%outString = string:AES256encrypt( key) Throws UnsupportedCrypto, InvalidCryptoKey, InvalidCryptoData
Syntax terms
%outString | A string variable to receive the encrypted or decrypted method object string. Its length is the same as string. |
---|---|
string | The string to which the method is applied. string must be a multiple of sixteen bytes in length; its maximum is 32768 bytes. It may be null. |
key | A 32-byte (only) string variable whose value is used to encrypt or decrypt the method object, string. |
Usage notes
- You are not prevented from creating confusion by encrypting with AES256decrypt and decrypting with AES256encrypt.
- The AES256decrypt and AES256encrypt functions are available as of Model 204 7.6.
Examples
In the following example, the output string from the AES256encrypt method is converted to hex using the StringToHex function to reveal its non-displayable characters, then decrypted to return the original input string:
b %ls is longstring %string is longstring %key is string len 32 %string = 'onetwothreefour0onetwothreefour0' %key = '12345678161616162424242432323232' %ls = %string:aes256encrypt(%key) printText {~} is {%ls:stringTohex} printText {~} is: {%ls:aes256decrypt(%key)} end
The result is:
%ls:stringTohex is: 513D0D34ABD198699043708FB076EC71513D0D34ABD198699043708FB076EC71 %ls:aes256decrypt(%key) is: onetwothreefour0onetwothreefour0
See also
- AES128decrypt and AES128encrypt (String functions)
- AES192decrypt and AES192encrypt (String functions)
- AES128CBCdecrypt and AES128CBCencrypt (String functions)
- AES192CBCdecrypt and AES192CBCencrypt (String functions)
- AES256CBCdecrypt and AES256CBCencrypt (String functions)